【Leetcode刷题篇】前K个高频元素
发布日期:2021-06-29 15:33:34
浏览次数:2
分类:技术文章
本文共 1031 字,大约阅读时间需要 3 分钟。
题目:给定一个非空的整数数组,返回其中出现频率前 k 高的元素。
示例 1:
输入: nums = [1,1,1,2,2,3], k = 2 输出: [1,2]
示例 2:
输入: nums = [1], k = 1 输出: [1]
题解:用一个优先级队列来进行,hashmap存储key和value,根据value的值来比较
package com.lcz.leetcode;/** * 前K个高频元素 * @author LvChaoZhang * */import java.util.*;public class Leetcode347 { public int[] topKFrequent(int[] nums,int k) { HashMaphashMap= new HashMap<>(); for (int i = 0; i < nums.length; i++) { if(hashMap.containsKey(nums[i])) { hashMap.put(nums[i], hashMap.get(nums[i])+1); }else { hashMap.put(nums[i],1); } } // 优先级队列 小顶堆 PriorityQueue queue = new PriorityQueue (k,(a,b)->Integer.compare(hashMap.get(a), hashMap.get(b))); // 对HashMap的key进行遍历 for(int key:hashMap.keySet()) { if(k>queue.size()) { queue.offer(key); }else if(hashMap.get(key)>hashMap.get(queue.peek())) { queue.poll(); queue.offer(key); } } int[] res = new int[k]; int index = 0; while(!queue.isEmpty()) { res[index++] = queue.poll(); } return res; }}
转载地址:https://codingchaozhang.blog.csdn.net/article/details/109588500 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!
发表评论
最新留言
能坚持,总会有不一样的收获!
[***.219.124.196]2024年04月23日 15时36分51秒
关于作者
喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
半导体芯片原厂涨价及调价声明新增了这些!
2019-04-29
为什么你学C++这么难?
2019-04-29
无人机破巡检难题,秒变电网卫士
2019-04-29
五年,我成为了一名嵌入式工程师。
2019-04-29
2020年电赛题目,命题专家们怎么看?
2019-04-29
PCB元器件摆放不可忽略的10个技巧
2019-04-29
掌握AI核心技术没有秘籍,能自己创造就是王道
2019-04-29
大学老师的月薪多少?实话实说:4万多一点……
2019-04-29
2020年电赛题目,命题专家权威解析!
2019-04-29
如何掌握“所有”的程序语言?没错,就是所有!
2019-04-29
39岁单身程序员入住养老院
2019-04-29
写论文,这个神器不能少!
2019-04-29
我在哥大读博的五年,万字总结
2019-04-29
本科、硕士、博士,究竟有何区别?
2019-04-29
如果我的实验室也这样布置,那多好。
2019-04-29
现在做硬件工程师还有前途吗?
2019-04-29
用 50 种编程语言写“Hello,World!”
2019-04-29
GD32替换STM32,这些细节一定要知道。
2019-04-29
华为员工离职心声:菊厂15年退休,感恩,让我实现了财务自由!
2019-04-29
春晚上的“拓荒牛”
2019-04-29