Q:
给定一个大小为 n 的数组,找出其中所有出现超过 ⌊ n/3 ⌋
次的元素。
说明: 要求算法的时间复杂度为 O(n),空间复杂度为 O(1)。
示例 1:
输入: [3,2,3] 输出: [3]
示例 2:
输入: [1,1,1,3,3,2,2,2] 输出: [1,2]
思路:还是暴力求解,使用词典进行统计,最后输出大于3的数,代码如下:
class Solution:
def majorityElement(self, nums):
"""
:type nums: List[int]
:rtype: List[int]
"""
if len(nums) == 1:
return nums
dict_ = {}
for num in nums:
if num in dict_:
dict_[num] +=1
else:
dict_[num] = 1
res = []
for k in dict_:
if dict_[k] > len(nums)// 3:
res.append(k)
return res