【题目】
数组中有一个数字出现的次数超过数组长度的一半,请找出这个数字。
你可以假设数组是非空的,并且给定的数组总是存在多数元素。
【示例 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]
寻找数组中的多数元素算法
这篇博客探讨了三种不同的方法来找出数组中出现次数超过一半的数字。方法1通过排序找到中位数,方法2使用计数法,方法3利用字典排序。这些算法适用于处理大数据量的数组,例如长度在50000以内的数组。

被折叠的 条评论
为什么被折叠?



