📅  最后修改于: 2023-12-03 15:26:38.094000             🧑  作者: Mango
在数组处理中,经常需要查找其中的局部最大值和局部最小值,并返回它们所在的索引。本文将介绍一个简单的算法来实现这个功能。
我们可以遍历一遍数组,对于一个元素,如果它比相邻的两个元素都大(或者都小),就认为它是一个局部最大值(或者最小值),并将其索引存储起来。具体步骤如下:
indices
,用于存储所有的局部最大值和局部最小值的索引;indices
;indices
列表。def find_local_extremes(arr):
indices = []
for i in range(len(arr)):
if i == 0:
if arr[i] > arr[i+1]:
indices.append(i)
elif i == len(arr) - 1:
if arr[i] > arr[i-1]:
indices.append(i)
else:
if arr[i] > arr[i-1] and arr[i] > arr[i+1]:
indices.append(i)
elif arr[i] < arr[i-1] and arr[i] < arr[i+1]:
indices.append(i)
return indices
arr = [1, 3, 5, 4, 2, 6, 2]
indices = find_local_extremes(arr)
print(indices) # [2, 5, 6]
在测试例子中,数组 [1, 3, 5, 4, 2, 6, 2]
中,局部最大值的索引为 2
、5
、6
。