美文网首页
华为机考题 | 前 K 个高频元素----python实现

华为机考题 | 前 K 个高频元素----python实现

作者: 金融测试民工 | 来源:发表于2020-02-16 11:10 被阅读0次

    题目描述

        给定一个非空的整数数组,返回其中出现频率前 k 高的元素。

    示例 1:

    输入: nums = [1,1,1,2,2,3], k = 2

    输出: [1,2]

    示例 2:

    输入: nums = [1], k = 1

    输出: [1]

    说明:

    你可以假设给定的 k 总是合理的,且 1 ≤ k ≤ 数组中不相同的元素的个数。

    你的算法的时间复杂度必须优于 O(n log n) , n 是数组的大小。


    思路

        统计每个数的频率,输出最大的几个,这完全迎合了Python中的Counter类,调用其的几个方法即可

    from collections import Counter

    class Solution:

        def topKFrequent(self,nums: List[int],k: int)-> List[int]:

            return[i[0]for i in Counter(nums).most_common(k)]

    或:

    from collections import Counter

    class Solution:

        def topKFrequent(self,nums: List[int],k: int)-> List[int]:

            count = collections.Counter(nums)   

            return heapq.nlargest(k,count.keys(),key=count.get) 

    相关文章

      网友评论

          本文标题:华为机考题 | 前 K 个高频元素----python实现

          本文链接:https://www.haomeiwen.com/subject/yxrpfhtx.html