LeetCode--No.347--Top K Frequent Elements
来源:互联网 发布:剑灵2016天女捏脸数据 编辑:程序博客网 时间:2024/06/17 07: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]
.
思路:
1. 新建map,将nums中的数据整理放入其中。key为nums值,value为该值出现频率。
2. 想办法对该map的value值进行排序。于是,将map的每一个键值对作为一个整体,放入list中。重新定义该list的compare函数。
3. 将该list的前k个元素的对应key值,存入结果list中,返回。
public 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++){ if (map.containsKey(nums[i])){ map.put(nums[i], map.get(nums[i]) + 1); } else map.put(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<Integer> res = new ArrayList<Integer>(); for(int i = 0; i < k; i++){ res.add(i,list.get(i).getKey()); } return res; }}
关于该题的其他解法:
1. http://blog.csdn.net/yeqiuzs/article/details/51312538
新建class FEntity, 对该类重写CompareTo方法。
2. http://blog.csdn.net/jin_kwok/article/details/51549322
第一步同我的方法一致。之后对map进行木桶排序。
0 0
- LeetCode--No.347--Top K Frequent Elements
- LeetCode--No.347--Top K Frequent Elements
- LeetCode No.347 Top K Frequent Elements
- [leetcode-347]Top K Frequent Elements(java)
- LeetCode[347] Top K Frequent Elements
- LeetCode 347 Top K Frequent Elements
- leetcode 347 Top K Frequent Elements C++
- leetcode-347-Top K Frequent Elements
- [Leetcode] #347 Top K Frequent Elements
- week12-leetcode #347-Top-K-Frequent-Elements
- leetcode 347[medium]--Top K Frequent Elements
- LeetCode|Top K Frequent Elements
- 【Leetcode】Top K Frequent Elements
- LeetCode:Top K Frequent Elements
- [LeetCode] Top K Frequent Elements
- LeetCode:Top K Frequent Elements
- 【leetcode】Top K Frequent Elements
- LeetCode Top K Frequent Elements
- [leetcode] 214. Shortest Palindrome 解题报告
- Binary Tree Vertical Order Traversal
- LeetCode--No.347--Top K Frequent Elements
- * leetcode #85 in cpp
- Lowest Common Ancestor of a Binary Tree
- LeetCode--No.347--Top K Frequent Elements
- 插入排序
- C语言_推箱子
- 第七届山东省ACM省赛 H Memory Leak 模拟
- Merge Two Sorted List
- LeetCode--No.350--Intersection of Two Arrays II
- android WIFI Socket 文件传输——问题已经解决了,发帖只因高兴--嘿嘿--并不彻底欢迎点评
- LeetCode--No.202--Happy Number
- Material Design之FloatingActionButton的使用