长度为n的数组,有一个数m重复出现了n/2+1次,找出这个数

最直观办法就是排序,然后找中间那个数。


要求时间复杂度为O(N)的时候,利用出现了n/2+1次的特性,把这个数和其他数一一抵消,剩下的就是要求的m。利用一个栈结构


def kay(lst):
    stack=[]
    for i in lst:
        if not stack or stack[-1]==i:
            stack.append(i)
        else:
            stack.pop()
    return stack.pop()


猜你喜欢

转载自blog.csdn.net/be5yond/article/details/74387202
今日推荐