多数元素
· 约 1 分钟阅读 · – 次阅读
leetcode
给定一个大小为 n 的数组,找到其中的多数元素。多数元素是指在数组中出现次数 大于 ⌊ n/2 ⌋ 的元素。
你可以假设数组是非空的,并且给定的数组总是存在多数元素。
示例 1:
输入:[3,2,3] 输出:3 示例 2:
输入:[2,2,1,1,1,2,2] 输出:2
哈希表法
class Solution:
def majorityElement(self, nums: List[int]) -> int:
counter = dict()
for e in nums:
if e in counter:
counter[e] += 1
else:
counter[e] = 1
if counter[e] > len(nums)//2:
return e
return -1
排序法
class Solution:
def majorityElement(self, nums: List[int]) -> int:
nums.sort()
return nums[len(nums)//2]
摩尔投票法
有点神奇!
如果数字相同就+1,不同就-1
class Solution:
def majorityElement(self, nums: List[int]) -> int:
ans = None
count = 0
for num in nums:
if count == 0:
ans = num
if ans == num:
count += 1
else:
count = count - 1
return ans