博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Leetcode 347. Top K Frequent Elements
阅读量:5280 次
发布时间:2019-06-14

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

Given a non-empty array of integers, return the k most frequent elements.

For example,

Given [1,1,1,2,2,3] and k = 2, return [1,2].

Note:

    • You may assume k is always valid, 1 ≤ k ≤ number of unique elements.
    • Your algorithm's time complexity must be better than O(n log n), where n is the array's size.

 

Top K 问题的变形,可以用collections.Count产生hash table。然后根据key值(freq)进行heap sort,这里可以仅仅维护一个size为 k 的 heap。

1 class Solution(object): 2     def topKFrequent(self, nums, k): 3         """ 4         :type nums: List[int] 5         :type k: int 6         :rtype: List[int] 7         """ 8         counts = collections.Counter(nums) 9         heap = []10         for key, cnt in counts.items():11             if len(heap) < k:12                 heapq.heappush(heap, (cnt, key))13             else:14                 if heap[0][0] < cnt:15                     heapq.heapreplace(heap, (cnt, key))16         return [x[1] for x in heap]17

 

转载于:https://www.cnblogs.com/lettuan/p/6242387.html

你可能感兴趣的文章
排序sort (一)
查看>>
Parrot虚拟机
查看>>
Teamcenter10 step-by-step installation in Linux env-Oracle Server Patch
查看>>
Struts2学习(三)
查看>>
Callable和Runnable和FutureTask
查看>>
GitHub 多人协作开发 三种方式:
查看>>
文本域添加编辑器
查看>>
Yum安装MySQL以及相关目录路径和修改目录
查看>>
java获取hostIp和hostName
查看>>
关于web服务器和数据库的各种说法(搜集到的)
查看>>
C# Stream 和 byte[] 之间的转换
查看>>
OMG: daily scrum nine
查看>>
redis与spring结合错误情况
查看>>
第六章 字节码执行方式--解释执行和JIT
查看>>
字符串方法title()、istitle()
查看>>
yield语句
查看>>
查看linux系统中占用cpu最高的语句
查看>>
[洛谷P1738]洛谷的文件夹
查看>>
ubuntu server设置时区和更新时间
查看>>
【京东咚咚架构演进】-- 好文收藏
查看>>