我想知道是否可以在 JavaScript 数组上的O(log n)中执行二进制搜索,以查找单个重复元素。
// Example
// Input: var arr = [1, 3, 4, 4, 6, 9, 11, 12, 14]
// Output: 4
我知道如何在线性时间内解决这个问题,但我一直在尝试在O(log n)中编写解决方案,除了我不确定如何在减少要搜索的数组块方面继续每次迭代。有什么建议吗?
答案 0 :(得分:2)
二进制搜索只有在您知道您正在寻找的元素时才有效(或者,更确切地说,如果您可以分辨出它在哪一半时已经存在选择了你的支点。)
您的问题中没有任何内容似乎表明您具备此类知识,因此,基于此,O(n)
是您目前可以做的最好的。
如果有一些额外的信息,则可能会出现一个范围内的所有数字,除了一个,或者副本在特定范围内。
但是,根据目前的信息,情况并非如此。