Author: Not specified Language: java
Description: Not specified Timestamp: 2017-07-09 17:03:15 +0000
View raw paste Reply
  1.  public List<Integer> topKFrequent(int[] nums, int k) {
  2.         HashMap<Integer, Integer> Freq = new HashMap<>();
  3.         for(int i : nums) {
  4.             Integer count = Freq.get(i);
  5.             if(count == null) {
  6.                 Freq.put(i, 1);
  7.             }else {
  8.                 Freq.put(i, count + 1);
  9.             }
  10.         }
  11.          PriorityQueue<Map.Entry<Integer, Integer>> minheap = new PriorityQueue<>(k,
  12.          new Comparator<Map.Entry<Integer, Integer>>() {
  13.             @Override
  14.             public int compare(Map.Entry<Integer, Integer> a, Map.Entry<Integer, Integer> b) {
  15.                 return a.getValue() - b.getValue();
  16.             }
  17.         });
  18.         for(Map.Entry<Integer, Integer> e : Freq.entrySet()) {
  19.             if(minheap.size() < k) {
  20.                 minheap.offer(e);
  21.             }else {
  22.                 Map.Entry<Integer, Integer> temp = minheap.peek();
  23.                 if(temp.getValue() < e.getValue()) {
  24.                     minheap.poll();
  25.                     minheap.offer(e);
  26.                 }
  27.             }
  28.         }
  29.         List<Integer> res = new ArrayList<>();
  30.         while(!minheap.isEmpty()) {
  31.             res.add(minheap.poll().getKey());
  32.         }
  33.         return res;
  34.     }
View raw paste Reply