栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

LeetCode347. 前 K 个高频元素(含详细解析JAVA实现)

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

LeetCode347. 前 K 个高频元素(含详细解析JAVA实现)

LeetCode347. 前 K 个高频元素

题目描述

步骤分析

    首先 用map来存储nums[]中各个数字出现的个数然后 创建也给优先队列并给它添加compare()使存储队列内的元素按照key值从小到大排列把map中的值添加到优先队列中(只加入k个元素)使优先队列中的元素就是题目所需要的定义一个数组存放最终结果

参考代码

class Solution {
   
	  public int[] topKFrequent(int[] nums, int k) {
	 	 //用map来存储nums[]中各个数字出现的个数
		 Map map = new HashMap<>();
		 for(int num:nums) {
			 map.put(num, map.getOrDefault(num, 0)+1);
		 }
		 //创建也给优先队列并给它添加compare()使存储队列内的元素按照key值从小到大排列
		 PriorityQueue queue = new PriorityQueue<>(new Comparator() {
			@Override
			public int compare(Integer o1, Integer o2) {
				 
				return map.get(o1)-map.get(o2);
			}
		});
		 
		 //把map中的值添加到优先队列中(只加入k个元素)使优先队列中的元素就是题目所需要的
		 for(Integer key: map.keySet()) {
			 if(queue.size()map.get(queue.peek())) {
				 queue.poll();
				 queue.add(key);
			 }
		 }
		 
		 //定义一个数组存放最终结果
		 int[] res =new int[k];
		 int index=0;
		 while(!queue.isEmpty()) {
			 res[index++]=queue.poll();
		 }
		return res;
	}
}

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/770923.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号