347. Top K Frequent Elements
https://leetcode.com/problems/top-k-frequent-elements/discuss/126241/java
先记录次数 然后按次数放进数组 然后从后往前取出
1 class Solution { 2 public List<Integer> topKFrequent(int[] nums, int k) { 3 Map<Integer, Integer> map = new HashMap<Integer, Integer>(); 4 for(int num : nums) { 5 map.put(num, map.getOrDefault(num, 0) + 1); 6 } 7 8 Set<Integer> set = map.keySet(); 9 List<Integer>[] record = new List[nums.length + 1]; //注意新建方法没有<> 10 for(int key : set) { 11 int freq = map.get(key); 12 if(record[freq] == null) { 13 record[freq] = new ArrayList<>(); //注意一下要新建 14 } 15 record[map.get(key)].add(key); 16 } 17 18 List<Integer> res = new ArrayList<>(); 19 for(int i = record.length - 1; i >= 0; i--) { 20 if(record[i] != null) { 21 for(int j = 0; j < record[i].size(); j++) { 22 if(res.size() < k) { 23 res.add(record[i].get(j)); 24 }else { 25 break; 26 } 27 } 28 } 29 30 } 31 return res; 32 } 33 }