1. 程式人生 > >347. Top K Frequent Elements​​​​​​​

347. Top K Frequent Elements​​​​​​​

注意閱讀題目的幾點要求,1:題目保證有輸出結果;2:題目說到輸出的結果是唯一的;3:題目所給陣列元素的大小不會超過陣列的長度;

先遍歷一邊,step1:用雜湊表儲存每個元素的頻次;step2:然後使用bucket,將出現頻次相同的元素放到同一個桶裡;將top-k元素打印出來。

class Solution {
    public List<Integer> topKFrequent(int[] nums, int k) {
        Map<Integer,Integer> map=new HashMap<Integer, Integer>();
        for(int i=0;i<nums.length;i++){
            map.put(nums[i],map.getOrDefault(nums[i],0)+1);
        }
        List<Integer> bucket[]=new ArrayList[nums.length+1];
        for(int key:map.keySet()){
            if(bucket[map.get(key)]==null)
                bucket[map.get(key)]=new ArrayList<Integer>();
            bucket[map.get(key)].add(key);
        }
        List<Integer> res=new ArrayList<Integer>();
        for(int i=nums.length;i>=0 && res.size()<k;i--){
            if(bucket[i]!=null){
                res.addAll(bucket[i]);
            }
        }
        return res;
    }
}