题目

我的思路
思路同 题目136
存入dict中,key存数字,value存counter。存完后,找到最大value的index并根据list(dict.keys())[index]找到对应的key。(这个方法以前有用到过)
class Solution:def majorityElement(self, nums: List[int]) -> int:dict = {}for num in nums:if(num in dict):dict[num] += 1else:dict[num] = 1mode_count = max(list(dict.values()))mode = list(dict.keys())[list(dict.values()).index(mode_count)]return mode
Boyer-Moore Voting Algorithm
原理:因为众数出现数量超过一半,那么众数可以和其他数字出现次数相互抵消。同数counter + 1, 不同counter - 1, count = 0时重置当前众数。最后出现次数超半的众数一定会留下。
class Solution:def majorityElement(self, nums: List[int]) -> int:mode = nums[0]count = 1for i in range(1, len(nums)):count = count + 1 if mode == nums[i] else count - 1if(count == 0):mode = nums[i]count = 1return mode
