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