我试图编写一个程序来查找' pits
'在列表中
整数。
凹坑是任何整数x,其中x小于或等于整数 紧接在它之前和之后。如果整数在开头 或者列表的结尾仅在内侧进行比较。
For example in:
[2,1,3] 1 is a pit.
[1,1,1] all elements are pits.
[4,3,4,3,4] the elements at 1 and 3 are pits.
我知道如何通过线性方法和行走来解决这个问题 但是我很好奇如何应用分而治之的 相对快速地做到这一点的技巧。我很缺乏经验 我不确定从哪里开始,我觉得类似于二进制文件 树可以应用吗?
如果相关的我在Python 3
工作。
谢谢你的时间:)。
答案 0 :(得分:2)
如果没有关于列表中值分布的任何其他信息,则无法实现小于O(x)的任何算法复杂度,其中x是列表中元素的数量。
逻辑上,如果数据集是随机的,例如布朗噪声,则坑可能发生在任何地方,需要完整的1:1采样频率才能正确找到每个坑。
即使只想找到序列中绝对最低的凹坑,也不可能在亚线性时间内实现,而不会影响结果的正确性。
可以考虑优化,例如仅仅并行化或跳过与坑相邻的值,但整体复杂性将保持不变。