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     }
     
  • 相关阅读:
    认证-权限-频率组件
    视图组件
    序列化类
    解析模块
    异常模块
    响应模块分析
    请求模块分析
    cbv请求分析
    django中的restful规范
    web接口与restful规范
  • 原文地址:https://www.cnblogs.com/wzj4858/p/7722312.html
Copyright © 2011-2022 走看看