假设我们有一个数组,我们必须找到一个元素,该元素之前的所有元素均小于该元素,之后的所有元素均大于该元素。最后,返回元素的索引,如果没有这样的元素,则返回-1。
因此,如果输入类似于A-[6、2、5、4、7、9、11、8、10],那么输出将为4。
为了解决这个问题,我们将遵循以下步骤-
n:= arr的大小
maximum_left:=大小为n的数组
maximum_left [0]:=-无穷大
对于1到n范围内的i,执行
maximum_left [i]:= maximum_left [i-1],arr [i-1]的最大值
minimum_right:=无穷大
对于范围在n-1到-1的i,减1,
返回-1
还给我
如果maximum_left [i] <arr [i]和minimum_right> arr [i],则
minimum_right:= Minimum_right的最小值,arr [i]
让我们看下面的实现以更好地理解-
def get_element(arr):
   n = len(arr)
   maximum_left = [None] * n
   maximum_left[0] = float('-inf')
   for i in range(1, n):
      maximum_left[i] = max(maximum_left[i-1], arr[i-1])
   minimum_right = float('inf')
   for i in range(n-1, -1, -1):
      if maximum_left[i] < arr[i] and minimum_right > arr[i]:
         return i
      minimum_right = min(minimum_right, arr[i])
   return -1
arr = [6, 2, 5, 4, 7, 9, 11, 8, 10]
print(get_element(arr))[6, 2, 5, 4, 7, 9, 11, 8, 10]
输出结果
4