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;
}
}
题目
题目描述
代码实现
分析:
代码:
标签:map,13,pq,题目,int,道题,hot100,ans,poll
From: https://www.cnblogs.com/chendsome/p/18642198