python pick peaks

题目

链接:题目

思路

这道题目的是找到列表的峰值及峰值的位置。
最初的想法就是循环一遍,通过比较循环元素和前一个元素来确定峰值。
后来看到了codewars 上另一种方法解决。

代码

# 最初想法
def pick_peaks(arr):
	ps = 0
	pos,peaks = [],[]
	rs = {"pos":pos,"peaks":peaks}
	for i in range(1,len(arr)):
		if arr[i] > arr[i-1]:
			ps = 1
		elif ps == 1 and arr[i] < arr[i-1]:
			pos.append(i-1)
			peaks.append(arr[i-1])
	return rs

# codewars 上方法
def pick_peaks(arr):
	pos,peaks = [],[]
	res = {"pos":[],"peaks":[]}
	for i in range(1,len(arr)):
		if arr[i] > arr[i-1]:
			pos,peaks = [i],[arr[i]]
		elif arr[i] < arr[i-1]
			res["pos"] += pos
			res["peaks"] += peaks
			pos,peaks = [],[]
	return res
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值