繁体   English   中英

使用重复元素查找数组中的最大值

[英]Find Maximum in Array with Repeated Elements

两天前我在一次采访中遇到了一个关于最佳地找到数组中最大元素的问题,我对此有疑问。

采访者描述的数组由可以重复的整数值组成(不一定在连续的位置),它也包括两部分(一部分可能是空的):第一部分是非递减顺序,第二部分是非递增的顺序,即如果[n]是一个由n个整数值组成的数组,则a [i] <= a [i + 1],i在[1,m]和a [j]> = a [j + 1],[m,n]和m中的j位于1和n之间(包括1和n)。 现在,他们让我以最有效的方式找到数组中的最大值

我认为,由于某些元素可能会重复,我无法使用分而治之的策略来构建搜索空间。 如果所有元素都是不同的,我们将能够使用二进制搜索lg n时间内找到最大值。 但是至少存在一个输入序列(可能在所有元素相同的情况下),在我们知道哪个元素最大之前,我们至少需要进行n-1比较。

面试官问我想如果我能在输入施加一些限制,使问题能够在LG的n次来解决。 我当时无法解决而仍在思考。

如果你能帮我思考会很有帮助。

面试官试图看看你是否知道三元搜索 :如果你要求零件严格增加然后严格减少,你就能在Log3(N)得到答案。 因此,面试官正在寻找的额外要求可能是重复的条目(如果有的话)应该出现在上升 - 下降转换点的不同侧面。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM