zoukankan      html  css  js  c++  java
  • (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.
  • 相关阅读:
    机房管理系统
    Red_Black_Tree C++
    Binary_Seach_Tree(BST) C++
    贪吃蛇小笔记
    转-Unix系统进程对SIGTERM、SIGUSR1和SIGUSR2信号处理
    My Dev Env
    mac gdb home-brew
    pub python
    ioctl siocgifhwaddr mac os x
    macbook与外接显示器
  • 原文地址:https://www.cnblogs.com/kydnn/p/5614502.html
Copyright © 2011-2022 走看看