347. 前K个高频元素

题目链接:

https://leetcode-cn.com/problems/top-k-frequent-elements/

解题思路:

多了一个hashmap的排序

 1 class Solution {
 2     public List<Integer> topKFrequent(int[] nums, int k) {
 3         
 4         Map<Integer,Integer> freqMap = new HashMap<>();
 5         
 6         for(int i=0;i<nums.length;i++)
 7         {
 8             if(freqMap.containsKey(nums[i]))
 9             {
10                 int count = freqMap.get(nums[i]);
11                 
12                 freqMap.put(nums[i],++count);
13             }
14             else
15             {
16                 freqMap.put(nums[i],1);
17             }
18         }
19         
20         List<Map.Entry<Integer, Integer>> list = new ArrayList<>(freqMap.entrySet());
21         Collections.sort(list, new Comparator<Map.Entry<Integer, Integer>>() {
22             @Override
23             public int compare(Map.Entry<Integer, Integer> o1, Map.Entry<Integer, Integer> o2) {
24                 return o2.getValue() - o1.getValue();
25             }
26         });
27         
28         int X=0;
29         List<Integer> ret = new ArrayList<>();
30         for (Map.Entry<Integer, Integer> entry : list) {
31             ret.add(entry.getKey());
32             ++X;
33             if (X >= k) {
34                 break;
35             }
36         }
37         return ret;
38         
39     }
40 }
原文地址:https://www.cnblogs.com/wangyufeiaichiyu/p/11055149.html