题目描述
解法
- 最简单的方法就是统计个数法
时间复杂度O(n),空间复杂度也O(n)
class Solution:
def majorityElement(self, nums: List[int]) -> int:
num_dic = {}
for ele in nums:
if ele not in list(num_dic.keys()):
num_dic[ele] = 0
num_dic[ele] += 1
if num_dic[ele] > len(nums)/2:
return ele
-
排序法
把所有元素进行排序,那么中位数一定是众数(因为题目限制的条件说众数大于数组总长度的1/2) -
投票法
最精妙的做法,时间复杂度是O(n),空间复杂度是O(1)
class Solution:
def majorityElement(self, nums: List[int]) -> int:
res = 0
for ele in nums:
if res == 0:
mode = ele
if ele == mode:
res += 1
else:
res -= 1
return mode