山脉数组 python

‘’'如果—个数组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))
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值