您的位置:首页 > 产品设计 > UI/UE

leetcode-java-347. Top K Frequent Elements

2016-06-26 20:52 375 查看
思路:

1.先通过map统计

2.对map的value排序

3.取出map中的前k个key

public class Solution {
public List<Integer> topKFrequent(int[] nums, int k) {
List<Integer> list = new ArrayList<Integer>();
Map<Integer,Integer> map = new HashMap<Integer,Integer>();

int len = nums.length,
i = 0;

for(;i < len;i++) {
if(!map.containsKey(nums[i])) {
map.put(nums[i],1);
} else {
int count = map.get(nums[i]);
count++;
map.put(nums[i],count);
}
}

List<Map.Entry<Integer,Integer>> list1 = new ArrayList<Map.Entry<Integer,Integer>>(map.entrySet());

Collections.sort(list1,new Comparator<Map.Entry<Integer,Integer>>() {
public int compare(Map.Entry<Integer,Integer> m1,Map.Entry<Integer,Integer> m2) {
return (m2.getValue() - m1.getValue());
}
});

for(i = 0;i < k;i++) {
int num = list1.get(i).getKey();
list.add(num);
}

return list;
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: