还有一个面试问题要求我在可能的最短计算时间内找到给定排序数组的最大可能重复值子数组。
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 不是我的强项。)我的第二个问题纯粹是出于好奇,是否有更省时的算法?