import java.util.Comparator;
import java.util.LinkedList;
import java.util.List;
import java.util.PriorityQueue;
import java.util.TreeMap;
import java.util.Comparator;
public class L347 {
// private class Freq{ // implements Comparable<Freq> 接口
// public int e, freq;
//
// public Freq(int e, int freq) {
// this.e = e;
// this.freq = freq;
// }
// public int compareTo(Freq another) {
// if(this.freq < another.freq)
// return -1;
// else if (this.freq > another.freq)
// return 1;
// else
// return 0;
// }
// }
// private class FreqComparator implements Comparator<Freq>{
//
// @Override
// public int compare(Freq a, Freq b) {
// return a.freq - b.freq;
// }
// }
public List<Integer> topKFrequent(int[] nums, int k) {
final TreeMap<Integer, Integer> map = new TreeMap<Integer, Integer>();
for(int num: nums) {
if(map.containsKey(num))
map.put(num, map.get(num) + 1);
else
map.put(num, 1);
}
// PriorityQueue<Integer> pq = new PriorityQueue<Integer>(new Comparator<Integer>() {
//
// public int compare(Integer a, Integer b) {
// // TODO 自动生成的方法存根
// return map.get(a) - map.get(b);
// }
// });
PriorityQueue<Integer> pq = new PriorityQueue<Integer>(
(a, b) -> map.get(a) - map.get(b) // 拉姆达表达式从1.8开始
);
for(int key: map.keySet()) {
if(pq.size() < k)
pq.add(key);
else if(map.get(key) > map.get(pq.peek())) {
pq.remove();
pq.add(key);
}
}
LinkedList<Integer> res = new LinkedList<Integer>();
while(!pq.isEmpty())
res.add(pq.remove());
return res;
}
}
LeetCode 347 优先队列
猜你喜欢
转载自blog.csdn.net/weixin_45765795/article/details/104974567
今日推荐
周排行