zoukankan      html  css  js  c++  java
  • 347. Top K Frequent Elements

    Given a non-empty array of integers, return the k most frequent elements.

    For example,
    Given [1,1,1,2,2,3] and k = 2, return [1,2].

    Note: 

    • You may assume k is always valid, 1 ≤ k ≤ number of unique elements.
    • Your algorithm's time complexity must be better than O(n log n), where n is the array's size.

    题目含义:给出一个非空整数列表,返回出现频次最大的k个元素

     1     public List<Integer> topKFrequent(int[] nums, int k) {
     2         List<Integer> result = new ArrayList<>();
     3         Map<Integer, Integer> map = new HashMap<>();
     4         for (int i = 0; i < nums.length; i++) {
     5             map.put(nums[i], map.getOrDefault(nums[i], 0)+1);
     6         }
     7         if (map.size() < k) return result;
     8         PriorityQueue<Map.Entry<Integer, Integer>> pq = new PriorityQueue<>(
     9                 new Comparator<Map.Entry<Integer, Integer>>() {
    10                     @Override
    11                     public int compare(Map.Entry<Integer, Integer> a, Map.Entry<Integer, Integer> b) {
    12                         return b.getValue() - a.getValue();
    13                     }
    14                 }
    15         );
    16         pq.addAll(map.entrySet());
    17         for (int i = 0; i < k; i++) {
    18             result.add(pq.poll().getKey());
    19         }
    20         return result;       
    21     }
     
  • 相关阅读:
    cf C. Vasya and Robot
    zoj 3805 Machine
    cf B. Vasya and Public Transport
    cf D. Queue
    cf C. Find Maximum
    cf B. Two Heaps
    cf C. Jeff and Rounding
    cf B. Jeff and Periods
    cf A. Jeff and Digits
    I Think I Need a Houseboat
  • 原文地址:https://www.cnblogs.com/wzj4858/p/7722312.html
Copyright © 2011-2022 走看看