摩尔投票法
摩尔投票法,你可以理解为,和敌人同归于尽。
加入有n个国家,分别由不同的人数,假如, 1v1 双方必死,那么最终胜利的就是人数超过一半的国家
问题: 寻找数组内超过一般的数字。
首先选取一个数字(国家), 遇到和自己相同的数字(同一个国家的展示), 个数(人数)加1,遇到不同的人数减1(相当于,和一个敌人同归于尽)。
def majorityElement(self, nums: list[int]) -> int:
warrior = nums[0] # 战士
count = 1 # 人数
for i in range(1, len(nums)):
if count == 0: # 如果战士死完了,换一个国家
count += 1
warrior = nums[i]
elif warrior == nums[i]: # 如果展示属于一个国家,则人数+1
count += 1
else:
count -= 1
return warrior