1
我有一个数组,其顺序类似于在一个数组中找到2个峰
增加,减少,增加,减少。
我想知道什么是两个局部最大元素在增加行为的末尾。我知道我可以在O(n)时间找到他们,我想知道是否有可能在O(log n)时间或O(n)时间以上找到它。
我有一个数组,其顺序类似于在一个数组中找到2个峰
增加,减少,增加,减少。
我想知道什么是两个局部最大元素在增加行为的末尾。我知道我可以在O(n)时间找到他们,我想知道是否有可能在O(log n)时间或O(n)时间以上找到它。
如果你不知道你的数据遵循特定的模式 - 增加后减小再增大后减小的趋势 - 那么你可以做的最好的是O(n),因为你将要研究每一个项目在数组中确定哪两个最高点是。
如果你知道它肯定确实遵循这种模式,那么我最好的猜测是二进制搜索的改编,肚里大致为:
没有做数学,我现成的,顶级的我头的猜测是,这个算法是O(2log(n))的充其量为O(n),在最坏的情况。这当然会是非常罕见的,它需要你只要搜索整个数据集,我觉得你需要一个平凡的小数据集比天真的搜索需要更长的时间。