最直观办法就是排序,然后找中间那个数。
要求时间复杂度为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()
本文介绍了一种在O(N)时间复杂度内找到出现次数超过n/2的众数的算法。该方法通过栈结构实现,利用众数出现次数的特性,将输入列表中的元素两两抵消,最终剩下的即为所求的众数。

被折叠的 条评论
为什么被折叠?



