215. 数组中的第K个最大元素
题目链接
题目描述
代码实现
分析:
- 后面可以看下官方题解的,手动写排序或者大顶堆。
代码:
class Solution {public int findKthLargest(int[] nums, int k) {PriorityQueue<Integer> pq = new PriorityQueue<>((n1, n2) -> n1 - n2);for(int i = 0; i<nums.length; i++){pq.add(nums[i]);if(pq.size() > k) {pq.poll();}}return pq.poll();}
}
347. 前 K 个高频元素
题目链接
题目描述
代码实现
分析:
代码:
class Solution {public int[] topKFrequent(int[] nums, int k) {int n = nums.length;Map<Integer, Integer> map = new HashMap<>();// 统计频率for(int i : nums){// map.put(i, map.getOrDefault(i, 0)+1);map.merge(i, 1, Integer::sum);}PriorityQueue<Map.Entry<Integer,Integer>> pq = new PriorityQueue<>((e1, e2) -> e1.getValue() - e2.getValue());for(Map.Entry entry : map.entrySet()){pq.add(entry);if(pq.size()>k){pq.poll();}}int[] ans = new int[k];for(int i = k -1; i>=0; i--){ans[i] = pq.poll().getKey();System.out.print(ans[i]);}return ans;}
}
题目
题目链接
题目描述
代码实现
分析:
代码: