【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) {
HashMap
hashMap= 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 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!

上一篇:【Leetcode刷题篇】leetcode692 前K个高频单词
下一篇:【Leetcode刷题篇】leetcode378 有序矩阵中第K小的元素

发表评论

最新留言

能坚持,总会有不一样的收获!
[***.219.124.196]2024年04月23日 15时36分51秒