class Solution:
def majorityElement(self, nums: List[int]) -> List[int]:
winner_1, counter_1 = None, None # 注意是None,不是0
winner_2, counter_2 = 0, 0
for num in nums:
if num == winner_1: # 如果该元素为第一个元素,则计数加1
counter_1 += 1
elif num == winner_2: # 如果该元素为第二个元素,则计数加1
counter_2 += 1
elif counter_1 == 0: # 选择第一个元素
winner_1 = num
counter_1 = 1
elif counter_2 == 0: # 选择第二个元素
winner_2 = num
counter_2 = 1
else: # 如果三个元素均不相同,则相互抵消1次
counter_1 -= 1
counter_2 -= 1
size = len(nums)
# 检测元素出现的次数是否满足要求
return [winner for winner in (winner_1, winner_2)
if winner is not None and nums.count(winner) > size / 3]
数据结构【数组、摩尔投票法】| leetcode 229. 多数元素 II(中等)
于 2022-09-04 23:30:37 首次发布