LeetCode 前K个高频元素题解
LeetCode 前K个高频元素题解题目描述给定一个数组找到前 k 个高频元素。示例输入nums [1,1,1,2,2,3],k 2输出[1,2]解题思路方法堆思路使用哈希表统计每个元素出现的次数。使用最小堆维护前 k 个高频元素。遍历哈希表将每个元素加入堆中。如果堆的大小超过 k则弹出堆顶元素。最后堆中的元素就是前 k 个高频元素。复杂度分析时间复杂度O(n log k)空间复杂度O(n)代码实现import heapq from collections import Counter def top_k_frequent(nums, k): count Counter(nums) heap [] for num, freq in count.items(): heapq.heappush(heap, (freq, num)) if len(heap) k: heapq.heappop(heap) return [num for freq, num in heap] # 测试 def test_top_k_frequent(): nums [1, 1, 1, 2, 2, 3] k 2 print(top_k_frequent(nums, k)) # 输出[1, 2] if __name__ __main__: test_top_k_frequent()总结前K个高频元素是堆的典型应用通过维护一个大小为 k 的堆来找出前 k 个高频元素。
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2628653.html
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!