classSolution{publicint[]topKFrequent(int[] nums,int k){// Store num countsMap<Integer,Integer> map =newHashMap();for(int num : nums){
map.put(num, map.getOrDefault(num,0)+1);}// 小到大PriorityQueue<Integer> pq =newPriorityQueue<Integer>((a, b)-> map.get(a)- map.get(b));// Add elements to the priority queuefor(Integer key : map.keySet()){
pq.add(key);// 超過k項就刪掉頭,為了節省空間,不用所有數字都存進去if(pq.size()> k) pq.poll();}// 結果int[] res =newint[k];for(int i =0; i < k;++i){
res[i]= pq.poll();}return res;}}
classSolution{publicint[]topKFrequent(int[] nums,int k){// Store countsMap<Integer,Integer> count =newHashMap();// Bucket (by frequencies)List<Integer>[] bucket =newList[nums.length +1];// Store countsfor(int i =0; i < nums.length;++i){
count.put(nums[i], count.getOrDefault(nums[i],0)+1);}// Init. bucketsfor(int i =0; i < bucket.length;++i){
bucket[i]=newArrayList();}for(Map.Entry<Integer,Integer> entry : count.entrySet()){// Find the bucket of the count and put in the number
bucket[entry.getValue()].add(entry.getKey());}// Build the resultint index =0;int[] res =newint[k];for(int i = bucket.length -1; i >0&& index < k;--i){for(int num : bucket[i]){
res[index]= num;++index;// Result obtainedif(index == k)return res;}}return res;}}