Skip to content

Commit 4f5f016

Browse files
committed
fd
1 parent b9723d9 commit 4f5f016

File tree

1 file changed

+25
-1
lines changed

1 file changed

+25
-1
lines changed

solution/src/main/java/com/inuker/solution/TopKFrequentElements.java

Lines changed: 25 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
package com.inuker.solution;
22

3+
import java.util.ArrayList;
34
import java.util.Comparator;
45
import java.util.HashMap;
56
import java.util.LinkedList;
@@ -43,9 +44,32 @@ public int compare(Integer o1, Integer o2) {
4344
return list;
4445
}
4546

47+
public List<Integer> topKFrequent2(int[] nums, int k) {
48+
Map<Integer, Integer> map = new HashMap<>();
49+
for(int n: nums){
50+
map.put(n, map.getOrDefault(n,0)+1);
51+
}
52+
53+
TreeMap<Integer, List<Integer>> freqMap = new TreeMap<>();
54+
for(int num : map.keySet()){
55+
int freq = map.get(num);
56+
if(!freqMap.containsKey(freq)){
57+
freqMap.put(freq, new LinkedList<>());
58+
}
59+
freqMap.get(freq).add(num);
60+
}
61+
62+
List<Integer> res = new ArrayList<>();
63+
while(res.size()<k){
64+
Map.Entry<Integer, List<Integer>> entry = freqMap.pollLastEntry();
65+
res.addAll(entry.getValue());
66+
}
67+
return res;
68+
}
69+
4670
// 耗时23ms,时间复杂度O(n),空间复杂度O(n)
4771
// 这里有个问题,result的size可能大于k了
48-
public List<Integer> topKFrequent2(int[] nums, int k) {
72+
public List<Integer> topKFrequent3(int[] nums, int k) {
4973
Map<Integer, Integer> map = new HashMap<Integer, Integer>();
5074
int max = 0;
5175
for (int n : nums) {

0 commit comments

Comments
 (0)