• (Collection)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.
      • public class Solution { //桶排序          
            public List<Integer> topKFrequent(int[] nums, int k) {  //也可以使用PriorityQueue
               Map<Integer,Integer> map=new HashMap<Integer,Integer>();
               List<Integer> res =new ArrayList<Integer>();
               for(int num: nums){
                   map.put(num,map.getOrDefault(num,0)+1);
               }
               List<Integer>[] bucket=new List[nums.length+1];
               for(int key : map.keySet()){
                   int freq=map.get(key);
                   if(bucket[freq]==null){
                       bucket[freq]=new ArrayList<Integer>();
                   }
                   bucket[freq].add(key);
               }
               for(int i=nums.length;i>=0 && res.size()<k;i--){
                  if(bucket[i]!=null)
                   res.addAll(bucket[i]);
               }
               return res;
            }
        }
        

          

        Your algorithm's time complexity must be better than O(n log n), where n is the array's size.
  • 相关阅读:
    Word批量转PDF或者图片
    sqlite3数据c/c++接口编程<linux,window>
    静态库和动态库
    QT信号和槽
    C程序编译过程
    Volatile关键字
    端口复用setsockopt
    深入理解epoll(转载)
    临时变量
    json学习随笔
  • 原文地址:https://www.cnblogs.com/kydnn/p/5614502.html
Copyright © 2020-2023  润新知