在 Python 中查找数组中元素,使得元素形成严格递减和递增序列
server side programmingprogrammingpython
假设我们有一个正数数组;我们必须检查一个点/项,直到该点/项首先创建一个严格递减序列,然后创建一个严格递增整数序列。这些是以下属性:我们必须记住,序列的长度必须至少为 2
此外,我们还注意到,递减序列的最后一个值是递增序列的第一个值。
因此,如果输入为 {5, 4, 3, 4},则输出将为 3,因为 {5, 4, 3} 严格递减,而 {3, 4} 严格递增。
为了解决这个问题,我们将遵循以下步骤 −
- 增加 := 1,减少 := 1
- n := 数组大小
- 对于范围为 1 到 n 的 i,执行
- 如果 array[i] < array[i-1],则
- 如果增加与 1 相同,则
- 减少 := 减少 + 1
- 否则,
- 返回 -1
- 如果增加与 1 相同,则
- 否则当 array[i] > array[i-1] 非零,则
- 如果增加与 1 相同,则
- pt := array[i-1]
- 如果减少 >= 2,则
- 增加 := 增加 + 1
- 否则,
- 返回 -1
- 如果增加与 1 相同,则
- 否则,当 array[i] 与 array[i-1] 相同时,则
- 返回 -1
- 如果 array[i] < array[i-1],则
- 如果增加 >= 2 且减少 >= 2,则
- 返回pt
- 否则,
- 返回 -1
示例
让我们看看下面的实现以便更好地理解 −
def search_element(array): increase = 1 decrease = 1 n = len(array) for i in range(1, n): if(array[i] < array[i-1]): if increase == 1: decrease = decrease + 1 else: return -1 elif(array[i] > array[i-1]): if increase == 1: pt = array[i-1] if decrease >= 2: increase = increase + 1 else: return -1 elif(array[i] == array[i-1]): return -1 if(increase >= 2 and decrease >= 2): return pt else: return -1 array = [5,4,3,4] element = search_element(array) print(element)
输入
[5,4,3,4]
输出
3