📅  最后修改于: 2023-12-03 15:26:11.144000             🧑  作者: Mango
在Python中,有时候我们需要找到一个数组中的局部极值数,即数组中的某个数比它前面和后面的数都大或都小。这里就提供一段程序来解决这个问题。
我们可以通过扫描一次数组来确定局部极值数。遍历每个元素,如果当前元素比前面一个元素大,后面一个元素小,或者当前元素比前面一个元素小,后面一个元素大,那么这个元素就是局部极值数。
def find_local_extremum(numbers):
"""
在数组中寻找局部极值数
Args:
numbers: 数组,包含n个元素
Returns:
res: 包含局部极值数的数组
"""
res = []
n = len(numbers)
if n <= 2:
return res
for i in range(1, n-1):
if numbers[i] > numbers[i-1] and numbers[i] > numbers[i+1]:
res.append(numbers[i])
elif numbers[i] < numbers[i-1] and numbers[i] < numbers[i+1]:
res.append(numbers[i])
return res
numbers = [3, 2, 5, 6, 8, 1, 9, 10]
res = find_local_extremum(numbers)
print(res) # 输出 [5, 1]
以上就是寻找数组中局部极值数的Python程序,可以很方便地解决这个问题。不过需要注意的是,如果数字数组长度小于等于2,那么就不会有局部极值数存在。