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

leetcode_middle_10_347. Top K Frequent Elements

2017-02-03 17:08 471 查看
题意:

给定一个整数数组,和一个有效的整数k,返回出现最多的k个数。

分析:

初步的想法是用map来存储整数和其出现的次数,再按值排序。

public class Solution {
public List<Integer> topKFrequent(int[] nums, int k) {
Map<Integer, Integer> map = new HashMap<>();
List<Integer> l = new ArrayList<>();
//将信息放入map
for(int i = 0; i < nums.length; i++){
if (!map.containsKey(nums[i])) {
map.put(nums[i], 0);
}else{
map.put(nums[i], map.get(nums[i]) + 1);
}
}
//按值降序排序
List<Map.Entry<Integer, Integer>> list = new ArrayList<Map.Entry<Integer, Integer>>(map.entrySet());
Collections.sort(list, new Comparator<Map.Entry<Integer, Integer>>() {
public int compare(Map.Entry<Integer, Integer> o1, Map.Entry<Integer, Integer> o2) {
return o2.getValue().compareTo(o1.getValue());
}
});
//放入list
for(int i = 0 ; i < k ; i++) {
l.add(list.get(i).getKey());
}
return l;
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  leetcode