在 Python 中查找一个元素,该元素之前的所有元素都小于它,之后的所有元素都大于它
假设我们有一个数组,我们需要找到一个元素,在其之前的所有元素都小于它,在其之后的所有元素都大于它。最后,返回该元素的索引,如果没有这样的元素,则返回 -1。
因此,如果输入类似于 A - [6, 2, 5, 4, 7, 9, 11, 8, 10],则输出为 4。
为了解决这个问题,我们将遵循以下步骤:
n := arr 的大小
maximum_left := 一个大小为 n 的数组
maximum_left[0] := -∞
对于 i 从 1 到 n,执行:
maximum_left[i] := maximum_left[i-1] 和 arr[i-1] 中的较大者
minimum_right := ∞
对于 i 从 n-1 到 -1,递减 1,执行:
如果 maximum_left[i] < arr[i] 且 minimum_right > arr[i],则:
返回 i
minimum_right := minimum_right 和 arr[i] 中的较小者
返回 -1
示例
让我们来看下面的实现,以便更好地理解:
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
广告
数据结构
网络
关系数据库管理系统 (RDBMS)
操作系统
Java
iOS
HTML
CSS
Android
Python
C 编程
C++
C#
MongoDB
MySQL
Javascript
PHP