【发布时间】:2019-02-13 15:16:53
【问题描述】:
我有整数列表/数组,如果子数组上升然后下降,则将其称为 peak。例如:
[5,5,4,5,4]
包含
[4,5,4]
这是一个高峰。
同时考虑
[6,5,4,4,4,4,4,5,6,7,7,7,7,7,6]
其中包含
[6,7,7,7,7,7,6]
这是一个高峰。
问题
给定一个输入列表,我想找到其中包含的所有最小长度的峰并报告它们。在上面的示例中,[5,6,7,7,7,7,7,6] 也是一个峰值,但我们删除了第一个元素,它仍然是一个峰值,因此我们不报告它。
所以对于输入列表:
L = [5,5,5,5,4,5,4,5,6,7,8,8,8,8,8,9,9,8]
我们会回来
[4,5,4] and [8,9,9,8] only.
我在为此设计一个很好的算法时遇到问题。任何帮助将不胜感激。
【问题讨论】:
-
所以 [4, 5, 5, 4] 也被认为是一个峰值?
-
@OlivierMelançon 是的
-
像 [4, 5, 5, 2] 这样的东西呢?还是保证元素只改变 1。
-
@IFunball 这也是一个高峰。但是当它们只变化 1 时,你有更简单的方法吗?
-
@IFunball 我建议的解决方案是否适合您的需求?