题目描述
自己解法
时间复杂度 O ( n ) O(n) O(n),空间复杂度 O ( 1 ) O(1) O(1)。
class Solution:
def majorityElement(self, nums: List[int]) -> List[int]:
ans = []
if not nums:
return ans
cand1,count1 = nums[0],0
cand2,count2 = nums[0],0
for i,val in enumerate(nums):
if cand1 == val:
count1 += 1
continue
if cand2 == val:
count2 += 1
continue
if count1 == 0:
cand1 = val
count1 += 1
continue
if count2 == 0:
cand2 = val
count2 += 1
continue
count1 -= 1
count2 -= 1
count1,count2 = 0,0
for i,val in enumerate(nums):
if val == cand1:
count1 += 1
elif val == cand2:
count2 += 1
if count1 > int(len(nums)/3):
ans.append(cand1)
if count2 > int(len(nums)/3):
ans.append(cand2)
return ans