class Solution: def majorityElement(self, nums: List[int]) -> List[int]: if not nums: return [] if len(nums) == 1: return nums nums.sort() res = [] n = len(nums) need_len = n // 3 left, cur = 0, nums[0] while left < n: right = left # 注意判断越界 while right < n and nums[right] == cur: right += 1 if right - left > need_len: res.append(cur) if right < n: cur = nums[right] left = right return res
classSolution: defmajorityElement(self, nums: List[int]) -> List[int]: res = [] res = [] # 返回数组 majorityO = -1# 候选人1 majorityT = -1# 候选人2 countO = 0# 候选人1 票数 countT = 0# 候选人2 票数 for num in nums: if countO == 0and num != majorityT: majorityO = num countO += 1 continue elif countT == 0and num != majorityO: majorityT = num countT += 1 continue else: if majorityO == num: countO += 1 elif majorityT == num: countT += 1 else: countO -= 1 countT -= 1 counterO = 0 counterT = 0
if countO > 0: for num in nums: if num == majorityO: counterO += 1 if counterO > len(nums)//3: res.append(majorityO) if countT > 0: for num in nums: if num == majorityT: counterT += 1 if counterT > len(nums)//3: res.append(majorityT)