【题目】
数组中有一个数字出现的次数超过数组长度的一半,请找出这个数字。
你可以假设数组是非空的,并且给定的数组总是存在多数元素。
【示例 1】
输入: [1, 2, 3, 2, 2, 2, 5, 4, 2]
输出: 2
【限制】
1 <= 数组长度 <= 50000
【代码】
【Python】
class Solution:
def majorityElement(self, nums: List[int]) -> int:
nums.sort()
return nums[len(nums)//2]
【方法2】
class Solution:
def majorityElement(self, nums: List[int]) -> int:
num=nums[0]
cnt=1
for i in range(1,len(nums)):
if nums[i]==num:
cnt+=1
else:
cnt-=1
if cnt==0:
cnt=1
num=nums[i]
return num
【方法3】
class Solution:
def majorityElement(self, nums: List[int]) -> int:
cnt=dict(Counter(nums))
cnt=sorted(cnt.items(),key=lambda x:x[1])
return cnt[-1][0]