Leetcode題解 347. Top K Frequent Elements
阿新 • • 發佈:2019-01-04
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].
用桶排序來做最後處理。
public class Solution {
public List<Integer> topKFrequent(int[] nums, int k) {
//step1—用雜湊表統計陣列中各元素出現的頻次,表中“鍵”為元素數值,“值”為對應元素出現的頻次
Map<Integer,Integer> map =new HashMap<Integer,Integer>();
for(int num:nums)//遍歷陣列
{
if(map.get(num)==null)//如果“鍵”為num的資料首次出現,則“值”設為1
map.put(num, 1);
else
map.put(num, map.get(num)+1);//重複出現,則累計頻次
}
List<Integer>[] list=new ArrayList[nums.length+1 ];
for(int key:map.keySet()){
int count=map.get(key);
if(list[count]==null)
list[count]=new ArrayList();
list[count].add(key);
}
List<Integer> result=new ArrayList();
for(int i=nums.length;i>=0;i--){
if (list[i]!=null&&result.size()<k){
result.addAll(list[i]);
}
}
return result;
}
}