LeetCode--No.347--Top K Frequent Elements
来源:互联网 发布:淘宝一个好评多少分 编辑:程序博客网 时间:2024/06/02 03:17
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,该值出现频率作为value。
2. 对于该map,想办法按照value排序。实现方法为: 建立一个list,将每一个map元素,都放入这个list中,并且对list的compare函数进行重写,根据mapvalue值,对list排序(倒序)。
3. 排序后,将list值的前K个元素,保存至结果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. 编写类FEntity , 重写CompareTo函数。
代码在此:http://blog.csdn.net/yeqiuzs/article/details/51312538
2. 第一步同我一样,接下来进行桶排序。
代码: http://blog.csdn.net/jin_kwok/article/details/51549322
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
- 日期联动框
- C#中的深复制和浅复制(在C#中克隆对象)
- 《笑话大全》APP代码详解3
- [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