【发布时间】:2011-11-27 02:44:16
【问题描述】:
给定一个数组,使其元素的值从第 0 个索引增加到某个 (k-1) 索引。在 k 处,该值最小,然后通过第 n 个元素再次开始增加。找到最小元素。
本质上,它的一个排序列表附加到另一个;示例:(1, 2, 3, 4, 0, 1, 2, 3)。
我已经尝试过各种算法,例如构建最小堆、快速选择或只是简单的遍历。但不能低于 O(n)。但是这个数组中有一个模式,表明二进制搜索类型的东西应该是可能的,复杂性应该是 O(log n),但找不到任何东西。 想法??
谢谢
【问题讨论】:
-
你的意思是它减少从0到K吗?
-
不,它可以从 k 减少到任何值,小于 k 然后再次开始增加。就像我们在一个列表中一个接一个地放置了两个排序的数组,我们需要找到合并点。
-
考虑到我误解了(显然不是唯一一个),我已经编辑了这个问题以希望澄清。 @JimMischel 得到了清晰的解释。
-
这些值是一定要加一,还是可以加任意值?
标签: algorithm divide-and-conquer