|
1 | 1 | classSolution {
|
2 |
| - |
3 |
| -publicList<Integer>topKFrequent(int[]nums,intk) { |
4 |
| -Map<Integer,Integer>map =newHashMap<>(); |
5 |
| - |
6 |
| -for (inti=0;i<nums.length;i++) { |
7 |
| -if (map.containsKey(nums[i])) { |
8 |
| -map.put(nums[i],map.get(nums[i])+1); |
9 |
| - } |
10 |
| -else { |
11 |
| -map.put(nums[i],1); |
12 |
| - } |
13 |
| - } |
14 |
| - |
15 |
| -Map<Integer,Integer>sortedMap =sortByValue(map); |
16 |
| - |
17 |
| -List<Integer>ans =newArrayList<>(); |
18 |
| -intc =0; |
19 |
| - |
20 |
| -for (Map.Entry<Integer,Integer>entry :sortedMap.entrySet()) { |
21 |
| -if (c ==k)break; |
22 |
| -ans.add(entry.getKey()); |
23 |
| - |
24 |
| -c++; |
25 |
| - } |
26 |
| - |
27 |
| -returnans; |
| 2 | +publicint[]topKFrequent(int[]nums,intk) { |
| 3 | +Map<Integer,Integer>map =newHashMap<>(); |
| 4 | +for (intnum :nums) { |
| 5 | +map.put(num,map.getOrDefault(num,0) +1); |
28 | 6 | }
|
29 |
| - |
30 |
| -privateMap<Integer,Integer>sortByValue(Map<Integer,Integer>unsortMap) { |
31 |
| - |
32 |
| -List<Map.Entry<Integer,Integer>>list = |
33 |
| -newLinkedList<Map.Entry<Integer,Integer>>(unsortMap.entrySet()); |
34 |
| - |
35 |
| -Collections.sort(list,newComparator<Map.Entry<Integer,Integer>>() { |
36 |
| -publicintcompare(Map.Entry<Integer,Integer>o1, |
37 |
| -Map.Entry<Integer,Integer>o2) { |
38 |
| -return (o2.getValue()).compareTo(o1.getValue()); |
39 |
| - } |
40 |
| - }); |
41 |
| - |
42 |
| -Map<Integer,Integer>sortedMap =newLinkedHashMap<Integer,Integer>(); |
43 |
| -for (Map.Entry<Integer,Integer>entry :list) { |
44 |
| -sortedMap.put(entry.getKey(),entry.getValue()); |
45 |
| - } |
46 |
| - |
47 |
| -returnsortedMap; |
| 7 | +PriorityQueue<Integer>pq =newPriorityQueue<>(newComparator<Integer>(){ |
| 8 | +publicintcompare(Integerp1,Integerp2) { |
| 9 | +returnmap.get(p1) -map.get(p2); |
| 10 | + } |
| 11 | + }); |
| 12 | +for (Integerkey :map.keySet()) { |
| 13 | +pq.add(key); |
| 14 | +if (pq.size() >k) { |
| 15 | +pq.poll(); |
| 16 | + } |
48 | 17 | }
|
| 18 | +int[]ans =newint[k]; |
| 19 | +for (inti =0;i <k;i++) { |
| 20 | +ans[i] =pq.poll(); |
| 21 | + } |
| 22 | +returnans; |
| 23 | + } |
49 | 24 | }
|