Top K Frequent Elements
来源:互联网 发布:江大教务网络管理系统 编辑:程序博客网 时间:2024/05/16 23:54
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]
.
Note:
- You may assume k is always valid, 1 ≤ k ≤ number of unique elements.
- Your algorithm's time complexity must be better than O(n logn), wheren is the array's size.
这个题不难,就是复习下treemap的用法。
下面的工具类可以将Hashmap排序。将Hashmap转变成LinkedHashMap。
class MapUtil { public static <K, V extends Comparable<? super V>> Map<K, V> sortByValue( Map<K, V> map ) { List<Map.Entry<K, V>> list = new LinkedList<Map.Entry<K, V>>( map.entrySet() ); Collections.sort( list, new Comparator<Map.Entry<K, V>>() { public int compare( Map.Entry<K, V> o1, Map.Entry<K, V> o2 ) { return (o1.getValue()).compareTo( o2.getValue() ); } } ); Map<K, V> result = new LinkedHashMap<K, V>(); for (Map.Entry<K, V> entry : list) { result.put( entry.getKey(), entry.getValue() ); } return result; } }
AC代码:(当然可以用上面的方法做)
public class Solution { class myComparator implements Comparator<Integer>{Map<Integer, Integer> map;public myComparator(Map<Integer, Integer> map) {this.map=map;}@Overridepublic int compare(Integer o1, Integer o2) {//大于,-1是降序,1是升序if(map.get(o1)>map.get(o2))return -1;return 1;}}public List<Integer> topKFrequent(int[] nums, int k) {List<Integer> result=new ArrayList<Integer>(); Map<Integer, Integer> map=new TreeMap<Integer, Integer>(); for(int i=0;i<nums.length;i++){ if(!map.containsKey(nums[i])){ map.put(nums[i], 1); }else{ map.put(nums[i], map.get(nums[i])+1); } } Comparator<Integer> myComparator=new myComparator(map); Map<Integer, Integer> treemap=new TreeMap<Integer, Integer>(myComparator); treemap.putAll(map); for (Integer key : treemap.keySet()) {result.add(key);k--;if(k==0){break;}} return result; }}
0 0
- Top K Frequent Elements
- Top K Frequent Elements
- Top K Frequent Elements
- Top K Frequent Elements
- Top K Frequent Elements
- Top K Frequent Elements
- Top K Frequent Elements
- Top K Frequent Elements
- Top K Frequent Elements
- Top K Frequent Elements
- Top K Frequent Elements
- Top K Frequent Elements
- Top K Frequent Elements
- Top K Frequent Elements
- Top K Frequent Elements
- Top K Frequent Elements
- Top K Frequent Elements
- Top K Frequent Elements
- 概率中的PDF,PMF,CDF
- HDU 2476 String painter(区间DP)
- 36. Valid Sudoku
- Fragment
- 统计学习方法(二)决策树
- Top K Frequent Elements
- CVE-2014-7911 Android本地提权漏洞分析与利用
- maven+Hibernate mysql驱动无法加载错误
- Linux多线程程序设计
- 为什么要使用SurfaceView来实现动画?
- 2016.10.05【GaoJueYi 初中部 NOIP普及组 】模拟赛总结及8、9月总结
- Android几种进程
- 20161005
- 四元数与欧拉角之间的转换及程序源码