‘’'如果—个数组k符合下面两个属性,则称之为山脉数组
数组的长度大于等于3
存在i,i >0 且 i < len(k)-1, 使得k[0] < k[1]< … < k[i-1] < k[i] > k[i+1] .>k[len(k)-1], 这个i就是顶峰索引。
现在,给定—个山脉数组,求顶峰索引。
‘’’
def find_peak(arr):
n = len(arr)
if n < 3:
return False
# 第一个循环找到发生转折的点
index = 0
while index < n - 1:
if arr[index] < arr[index + 1]:
index += 1
else:
# 当前元素比右侧元素小 ,说明到达峰顶了,停止循环
break
# 如果index == 0,说明lst[0] < lst[1] 不成立 ,显然不是山脉数组
# 如果index == len(lst) -1, 说明倒数第2个数小于倒数第一个数,显然也不是山脉数组
if index == 0 or index == n - 1:
return False
# 接下来要判断从index 开始到列表末尾,是不是都满足lst[index] > lst[index+1]
while index < n-1:
if arr[index] > arr[index + 1]:
index += 1
else:
return False
return True
if __name__ == '__main__':
arr = [1, 2, 3, 4, 5, 4, 3, 2, 1]
print(find_peak(arr))
标签:__,index,arr,return,python,lst,数组,山脉
From: https://blog.csdn.net/qingcheng_123456/article/details/137155914