题目
链接:题目
思路
这道题目的是找到列表的峰值及峰值的位置。
最初的想法就是循环一遍,通过比较循环元素和前一个元素来确定峰值。
后来看到了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