Python 确定旅行者经过的峰值数量
有必要根据数据确定有多少座山峰,我们的旅行者准确地穿过。如果两个相邻点与当前点的高度不高或不相等,则该点称为山峰。极值点不视为山峰的起点和终点。 例如:Python 确定旅行者经过的峰值数量,python,Python,有必要根据数据确定有多少座山峰,我们的旅行者准确地穿过。如果两个相邻点与当前点的高度不高或不相等,则该点称为山峰。极值点不视为山峰的起点和终点。 例如: [1,2,3,2,1] Answer: 1 peak [1,2,3,3,2,1] Answer: 0 peak [1,2,5,6,4,3,4,2,1] Answer: 2 peaks 我很难在一个循环中比较两个相邻的峰,并且在峰之间移动。或者我应该使用任何函数吗 peaks = [1,2,3,4,5,6,3,1,4,5,7,4,3,12,
[1,2,3,2,1]
Answer: 1 peak
[1,2,3,3,2,1]
Answer: 0 peak
[1,2,5,6,4,3,4,2,1]
Answer: 2 peaks
我很难在一个循环中比较两个相邻的峰,并且在峰之间移动。或者我应该使用任何函数吗
peaks = [1,2,3,4,5,6,3,1,4,5,7,4,3,12,67,85,34,23] #the peak points
for i in peaks:
if i[0]>i[1][2] # i stacked here, just dont know the right algorithm
只需检查data[i]>data[i-1]和data[i]>data[i+1]是否正确,如果正确,则增加计数器
下面是我测试它的链接:为什么这个标签是C?这没有多大意义:[3,1,3]应该有两个峰值,[3,1,3,3,3,1,3]三个,和[1,2,3,3,2,1]一个@雷布朗马斯克,你说得对!但是问题的要求是不同的,因此解决方案必须是相应的。在这种情况下,我是自以为是的:我认为需要在kinersha审查这些要求,以符合某种最小惊讶的原则!如果你是OP提到的旅行者,你会很感激的@英特杰,你说得对!我已经更新了我的答案。只使用range1,lendata-1会更简单。
def get_peak_count(data):
count = 0
l = len(data)
for i in range(1, l - 1):
if data[i - 1] < data[i] and data[i + 1] < data[i]:
count += 1
return count
print get_peak_count([1,2,3,2,1])
print get_peak_count([1,2,5,6,4,3,4,2,1])
print get_peak_count([1,2,3,3,2,1])
print get_peak_count([1,2,3,4,5,6,3,1,4,5,7,4,3,12,67,85,34,23])