Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/rest/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 确定旅行者经过的峰值数量_Python - Fatal编程技术网

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])