229. 求众数 II
原始题目链接:https://leetcode-cn.com/problems/majority-element-ii/
给定一个大小为 n 的整数数组,找出其中所有出现超过 ⌊ n/3 ⌋ 次的元素。
示例 1:
输入:[3,2,3]
输出:[3]
示例 2:
输入:nums = [1]
输出:[1]
示例 3:
输入:[1,1,1,3,3,2,2,2]
输出:[1,2]
解题思路:
统计数组中的元素个数,然后根据出现次数的条件进行判断即可。
代码实现:
class Solution:
def majorityElement(self, nums: List[int]) -> List[int]:
from collections import Counter
from math import floor
counter = Counter(nums)
freq = floor(len(nums) / 3)
res = []
for i, j in counter.items():
if j > freq:
res.append(i)
return res
不使用Counter计数器
class Solution:
def majorityElement(self, nums: List[int]) -> List[int]:
dic = {}
res = []
#统计nums中数字的出现次数
for i in nums:
if i in dic:
dic[i] += 1
else:
dic[i] = 1
# 遍历统计的次数字典,根据条件判断筛选答案
for i in dic.keys():
if dic[i] > floor(len(nums) / 3):
res.append(i)
return res