在Python中找到所有元素都小于它的元素,然后在所有元素中都大于它的元素

假设我们有一个数组,我们必须找到一个元素,该元素之前的所有元素均小于该元素,之后的所有元素均大于该元素。最后,返回元素的索引,如果没有这样的元素,则返回-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
    猜你喜欢