力扣题347前K个高频元素
发布日期:2022-03-04 11:48:17
浏览次数:4
分类:技术文章
本文共 1083 字,大约阅读时间需要 3 分钟。
给你一个整数数组 nums 和一个整数 k ,请你返回其中出现频率前 k 高的元素。你可以按 任意顺序 返回答案。
示例 1:
输入: nums = [1,1,1,2,2,3], k = 2
输出: [1,2] 示例 2:输入: nums = [1], k = 1
输出: [1]1.自己的解法:首先统计每一个元素出现的次数,然后将其存储在哈希表中,然后将哈希表中的每一对以数组的形式存储在优先队列中(优先队列以出现次数为标准降序排列),然后取出优先队列中的前k个元素即可。
class Solution { public int[] topKFrequent(int[] nums, int k) { Mapmap = new HashMap<>(); for (int num : nums) { map.put(num,map.getOrDefault(num,0) + 1);//统计每一个数字出现的次数,存储在哈希表中 } PriorityQueue pq = new PriorityQueue<>(new Comparator () {//优先队列,按照出现次数降序排列 public int compare(int[] num1,int[] num2) { return num2[1] - num1[1]; } }); for(Map.Entry entry : map.entrySet()) { int num = entry.getKey(); int count = entry.getValue(); pq.offer(new int[]{num,count});//把哈希表中的每个元素加入优先队列中,进行排序 } int[] ans = new int[k]; for (int i = 0;i < k;i++) {//取出排序后优先队列中的前k个元素 ans[i] = pq.poll()[0]; } return ans; }}
题源:
转载地址:https://blog.csdn.net/xxyneymar/article/details/122134604 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!
发表评论
最新留言
表示我来过!
[***.240.166.169]2024年04月26日 01时08分26秒
关于作者
喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
PHP session回收机制
2021-06-30
最新的全球编程语言,操作系统,web服务器等使用率分析报告
2021-06-30
用C语言写PHP扩展
2021-06-30
PHP Extension programming
2021-06-30
海量数据处理
2021-06-30
PHP防止注入攻击
2021-06-30
多路IO复用模型 select epoll 等
2021-06-30
Linux Epoll介绍和程序实例
2021-06-30
output_buffering详细介绍
2021-06-30
php缓冲 output_buffering和ob_start
2021-06-30
php error_reporting 详解
2021-06-30
剖析PHP中的输出缓冲
2021-06-30
HTTP响应头不缓存
2021-06-30
phpize
2021-06-30
PHP安装eAccelerator
2021-06-30
PHP新的垃圾回收机制:Zend GC详解
2021-06-30
linux上使用strace查看C语言级别的php源码【一种方法】
2021-06-30
ACCEPT()和ACCEPT4()
2021-06-30
php内核探索方法与资源
2021-06-30
PHP安装扩展mcrypt以及相关依赖项 【PHP安装PECL扩展的方法】
2021-06-30