229 求众数 II(collections.Counter方法计数)
发布日期:2021-05-07 21:53:42 浏览次数:12 分类:技术文章

本文共 701 字,大约阅读时间需要 2 分钟。

1. 问题描述:

给定一个大小为 n 的数组,找出其中所有出现超过 ⌊ n/3 ⌋ 次的元素。说明: 要求算法的时间复杂度为 O(n),空间复杂度为 O(1)。

示例 1:

输入: [3,2,3]
输出: [3]

示例 2:

输入: [1,1,1,3,3,2,2,2]
输出: [1,2]

2. 思路分析:

分析题目可以知道我们需要统计出数组中各个数字出现的次数然后找出超出n / 3的元素即可,统计数字出现的次数对于c++或者是Java语言来说可以使用map来计数,对于python来说可以直接使用调用python中的collections.Counter方法进行计数,调用这个方法得到的是一个类似于字典的结果,我们只需要对这个结果进行判断找到符合条件的结果进行返回即可

3. 代码如下:

import collectionsfrom typing import Listclass Solution:    # 使用字典统计出每一个数字出现的次数即可: 使用collections.Counter方法即可统计    def majorityElement(self, nums: List[int]) -> List[int]:        dic, length = collections.Counter(nums), len(nums)        res = list()        for key, value in dic.items():            if value > length // 3: res.append(key)        return res

 

上一篇:216 组合总和 III(递归)
下一篇:222 完全二叉树的节点个数(递归)

发表评论

最新留言

能坚持,总会有不一样的收获!
[***.219.124.196]2025年04月15日 12时56分38秒