题目链接
https://leetcode-cn.com/problems/majority-element/
题目描述
升级打怪怪
- 思路: 用哈希表表存储数字以及对应的个数,拿middest这个变量去跟n/2比较。返回众数middest。
class Solution(object):
def majorityElement(self, nums):
"""
:type nums: List[int]
:rtype: int
"""
mapping = {}
middest = 0
for i in range(len(nums)):
try:
# 如果mapping字典里没有相应的key会报错,所以这里try一下
mapping[nums[i]]
except:
mapping[nums[i]]=1
else:
mapping[nums[i]]+=1
if mapping[nums[i]]>len(nums)/2:
middest = nums[i]
return middest
复杂度分析:
- 空间复杂度:O(n), 哈希表需要最多n-n/2的存储空间
- 时间复杂度:O(n),我们将 nums 迭代一次,哈希表的插入是常数时间的。所以总时间复杂度为 O(n)时间的。
不一样的脑回路
- 思路:对数组进行排序,那么n为奇数时,众数的下标为 n/2,当n为偶数时,众数的下标为n/2+1
class Solution:
def majorityElement(self, nums):
nums.sort()
return nums[len(nums)//2]