
摩尔投票
不同元素两两抵消,最后剩下的一定是多数元素
时间:O(n)
空间:O(1)
clike
class Solution:
def majorityElement(self, nums: List[int]) -> int:
# 摩尔投票:不同元素两两抵消,最后剩下的一定是多数元素
# 时间:O(n),空间:O(1)
candidate = None # 多数元素
count = 0
for num in nums:
if count == 0:
candidate = num # count抵消完了,更新候选为当前num
# count ≠0,有候选者
if num == candidate: # 还是候选者,count+1
count += 1
else: # 否则抵消
count -= 1
return candidate