Leetcode地址169. 多数元素 - 力扣(LeetCode) (leetcode-cn.com)
1.暴力法:循环两次
时间复杂度:O(n^2)
空间复杂度:O(1)
2.排序+取n/2处的元素
时间复杂度:O(nlogn)
空间复杂度:O(logn)
3.哈希表
时间复杂度:O(n)
空间复杂度:O(n)
4.分治+递归
时间复杂度:O(nlogn)
空间复杂度:O(logn)
其实没有想到比较巧妙的方法,从时间复杂度、空间复杂度和便捷性对比下来,在这里答题的时候写了哈希表法。
class Solution(object):
def majorityElement(self, nums):
"""
:type nums: List[int]
:rtype: int
"""
count={}
for n in nums:
if n in count.keys():
count[n]+=1
else:
count[n]=1
if count[n]>int(len(nums)/2):
return n