【发布时间】:2023-03-26 23:07:01
【问题描述】:
另一个面试问题要求我在尽可能短的计算时间内找到给定排序数组的最大可能重复值子数组。
Let input array be A[1 ... n]
Find an array B of consecutive integers in A such that:
for x in range(len(B)-1):
B[x] == B[x+1]
我相信最好的算法是将数组分成两半,然后从中间向外,从中间开始相互比较整数,然后从中间找到相同整数的最长应变。然后我将通过将数组分成两半并在两半上调用方法来递归调用该方法。
我的面试官说我的算法很好,但我对算法 O(logn) 的分析是不正确的,但从未有时间告诉我正确答案是什么。我的第一个问题是这个算法的 Big-O 分析是什么? (请尽可能多地展示工作!Big-O 不是我的强项。)我的第二个问题纯粹是出于好奇,是否有更省时的算法?
【问题讨论】:
-
我对你的问题感到很困惑。你能更详细地描述面试官的意思吗? (什么是“应变”?)您能否更详细地描述您的解决方案? (可能使用伪代码。)
-
更多细节未注明日期。我基本上使用了分而治之。
-
请修改您的标题,以便对本网站的未来用户更有用。
-
是的,谢谢。我对确切措辞的记忆很模糊。
标签: algorithm complexity-theory big-o