Python前K个高频元素怎么实现
发表于:2026-11-03 作者:千家信息网编辑
千家信息网最后更新 2026年11月03日,本篇内容介绍了"Python前K个高频元素怎么实现"的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!题目
千家信息网最后更新 2026年11月03日Python前K个高频元素怎么实现
本篇内容介绍了"Python前K个高频元素怎么实现"的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!
题目
给定一个非空的整数数组,返回其中出现频率前 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 是数组的大小。
题目数据保证答案唯一,换句话说,数组中前 k 个高频元素的集合是唯一的。
你可以按任意顺序返回答案。
解题思路
思路:堆
首先审题,题目要求给定非空数组,求出频率前 k 高的元素。提示中说明,算法时间复杂度要优于 O(nlogn),又因为只需返回前 k 个频率最高的元素,那么我们借助堆的思路,对于频率 k 之后的不做处理,进而将时间复杂度优化到 O(nlogk)。
那么具体的做法如下:
先用哈希表统计元素出现的次数;
建立一个最小堆,维护最小堆:
当堆中元素数目小于 k,这里直接将元素插入;
若堆中元素数目等于 k 时,这个时候要将新元素出现频率与堆顶元素出现频率进行比较。若新元素出现频率大于堆顶元素,那么弹出,插入新元素。
最终,堆中的 k 个即是要求的答案。
具体代码实现如下(这里直接使用了 heapq 模块)。
from typing import Listclass Solution: def topKFrequent(self, nums: List[int], k: int) -> List[int]: hash_map = {} # 哈希表统计元素出现频率 for num in nums: if num not in hash_map: hash_map[num] = 0 hash_map[num] += 1 # 建立最小堆,存储频率最大的 k 个元素 import heapq pq = [] for key in hash_map: if len(pq) < k: heapq.heappush(pq, (hash_map[key],key)) elif hash_map[key] > pq[0][0]: heapq.heapreplace(pq, (hash_map[key],key)) # 取出最小堆中的元素 res = [] while pq: res.append(pq.pop()[1]) return res# nums = [3,0,1,0]# nums = [4,1,-1,2,-1,2,3]# k = 2# solution = Solution()# print(solution.topKFrequent(nums, k))"Python前K个高频元素怎么实现"的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识可以关注网站,小编将为大家输出更多高质量的实用文章!
元素
频率
数组
最小
复杂
复杂度
思路
时间
答案
题目
输出
内容
数目
更多
知识
示例
算法
哈希
提示
统计
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
港股互联网科技股
科技制造互联网公司
互联网科技公司怎么样
美国互联网黑科技
沃里互联网科技
时间互联网络科技
互联网科技大会案例
丰台科技园 互联网公司
受益于互联网科技的高速发展
新兴科技互联网创新大赛颁奖典礼
深圳市优智互联网科技有限公司
佛山市翊博互联网络科技有限公司
互联网金融科技公司的优势
互联网科技数字货币
万物互联网智能科技
米泉互联网科技专业怎么样
杭州融税互联网科技有限公司
河南商务圈互联网科技有限公司
瑞安市蟠桃会互联网科技有限公司
小牛互联网科技有限公司地址
互联网科技深圳
互联网核心科技是什么
互联网品科技
互联网科技金融
互联网金融与金融科技
善班互联网科技
互联网科技热点资讯
工业互联网等科技实现智能化赋能
江苏互联网科技小贷
青岛易易互联网科技