169. Majority Element
169. Majority Element
题目
解题思路
**自己的方法:**通过Counter来计算出每个数字对应的数字出现的次数,遍历Counter找出出现次数最大值的数字。
其他方法: 通过构造set得出数字的列表,使用count来计算出现数字的个数,得到最大值。
**优秀方法:**发现我们忽略了一个很重要的信息点:出现次数大于[n/2]次。即可知,可以通过排序然后取中位数得到结果。
我的代码
from collections import Counter
class Solution:
def majorityElement(self, nums: List[int]) -> int:
cnt=Counter()
for i in nums:
cnt[i]+=1
max,ans=0,None
for k,v in cnt.items():
if v>max:
max=v
ans=k
return ans
优秀代码(适用范围更广)
class Solution:
def majorityElement(self, nums: 'List[int]') -> 'int':
item=set(nums)
max_a=0
answer=0
for i in item:
count=nums.count(i)
if count> max_a:
answer= i
max_a=count
return answer
最佳代码
class Solution:
def majorityElement(self, nums: 'List[int]') -> 'int':
List = nums
List.sort()
return List[len(nums)//2]