zoukankan      html  css  js  c++  java
  • [leetcode]347. Top K Frequent Elements 最高频的K个元素

    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个元素。

    Solution: PriorityQueue

    扫数组,将数组每个元素和其对应的出现频率存到Map里

    扫Map,将Map里的元素放入maxHeap

    从maxHeap里poll出K个元素即可

    code

     1 class Solution {
     2     public List<Integer> topKFrequent(int[] nums, int k) {
     3         Map<Integer, Integer> numFreqs = new HashMap();
     4         
     5         for(int num : nums){
     6             numFreqs.put(num, numFreqs.containsKey(num) ? numFreqs.get(num) + 1 : 1);
     7         }
     8         
     9         PriorityQueue <Map.Entry<Integer, Integer>> maxHeap = new PriorityQueue<>((entry1, entry2) -> entry2.getValue() - entry1.getValue());
    10         
    11         
    12         for(Map.Entry<Integer, Integer> entry : numFreqs.entrySet()){
    13             maxHeap.add(entry);
    14         }
    15         
    16         List<Integer> result = new ArrayList<>();
    17         while(!maxHeap.isEmpty() && result.size() < k){
    18             result.add(0, maxHeap.poll().getKey());
    19         }
    20         return result;
    21         
    22     }
    23 }
  • 相关阅读:
    组合模式
    MySQL8.0 下载安装启动(Windows10)
    OI如逆旅,我亦是行人——省选
    闲话—江湖痴情浅,信步余生。平剑红烛,青丝微绾,却话奁中。
    此时彼方
    CSP 2019游记 & 退役记
    西狂 杨过
    SDOI 2019 Round1 游记
    NOIP2018游记
    未来可期,不知所终
  • 原文地址:https://www.cnblogs.com/liuliu5151/p/9158270.html
Copyright © 2011-2022 走看看