package heap; import java.util.HashMap; import java.util.Map; import java.util.PriorityQueue; /** * 题目: 347. 前 K 个高频元素 (topKFrequent) * 描述:给你一个整数数组 nums 和一个整数 k ,请你返回其中出现频率前 k 高的元素。你可以按 任意顺序 返回答案。 * 示例 1: 输入: nums = [1,1,1,2,2,3], k = 2 输出: [1,2] * 链接:https://leetcode.cn/problems/top-k-frequent-elements/ */ public class TopKFrequent { public int[] topKFrequent(int[] nums, int k) { HashMapmap=new HashMap<>(); PriorityQueue minHeap = new PriorityQueue<>( (a, b) -> b[1] - a[1]); int[] res=new int[k]; int i=0; for (int num : nums) { if(!map.containsKey(num)) map.put(num,1); else map.put(num,map.get(num)+1); } for (Map.Entry entry : map.entrySet()) { minHeap.add(new int[]{entry.getKey(),entry.getValue()}); } while (!minHeap.isEmpty()) { if(i