347. Top K Frequent Elements
阿新 • • 發佈:2018-12-22
注意閱讀題目的幾點要求,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; } }