347. Top K Frequent Elements
来源:互联网 发布:哈尔滨网络广播电视台 编辑:程序博客网 时间:2024/06/03 17:10
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 log n), where n is the array’s size.
解题思路:
1.数组循环一遍,把元素的出现次数都记录下来
2.对元素出现次数做降序排序
3.选择前k个元素输出为结果
class Solution { public List<Integer> topKFrequent(int[] nums, int k) { ArrayList<Element> elementList = new ArrayList<>(); //Map保存的是元素和elementList对应元素下标的键值对.空间换时间. HashMap<Integer, Integer> number2IndexMap = new HashMap<>(); for (int i = 0; i < nums.length; i++) { int num = nums[i]; if (number2IndexMap.containsKey(num)) { //如果Map中已保存该num的键值对,则获取出来并且count自增. int index = number2IndexMap.get(num); elementList.get(index).count++; } else { //否则,新建一组键值对,保存到Map中. Element element = new Element(num); elementList.add(element); number2IndexMap.put(num, elementList.size() - 1); } } //降序排序elementList. Collections.sort(elementList); //把前面k个输出到resultList中. List<Integer> resultList = new ArrayList<>(); for (int i = 0; i < k; i++) { resultList.add(elementList.get(i).number); } return resultList; } /** * 用来记录元素出现的次数 */ private static class Element implements Comparable<Element> { public final int number; public int count = 0; public Element(int number) { this.number = number; } @Override public int compareTo(Element element) { return element.count - this.count; } }} * 用来记录元素出现的次数 */ private static class Element implements Comparable<Element> { public final int number; public int count = 0; public Element(int number) { this.number = number; } @Override public int compareTo(Element element) { return element.count - this.count; } }}
阅读全文
0 0
- 347. Top K Frequent Elements
- 347. Top K Frequent Elements
- 347. Top K Frequent Elements
- 347. Top K Frequent Elements
- 347. Top K Frequent Elements
- 347. Top K Frequent Elements
- 347. Top K Frequent Elements
- 347. Top K Frequent Elements
- 347. Top K Frequent Elements
- 347.Top K Frequent Elements
- 347. Top K Frequent Elements
- 347. Top K Frequent Elements
- 347. Top K Frequent Elements
- 347. Top K Frequent Elements
- 347. Top K Frequent Elements
- 347. Top K Frequent Elements
- 347. Top K Frequent Elements
- 347. Top K Frequent Elements
- Android设计模式之单例模式
- 一次失败的挂马
- re:Invent 2017的四个侧面,感受中美云计算生态
- 简析“自顶向下,逐步求精”的程序设计方法
- 数组与字符串的JAVA创建
- 347. Top K Frequent Elements
- Mybatis学习(一)MyBatis简介与配置MyBatis+Spring+MySql
- ssd-mobilenet编译出错:Message type "caffe.LayerParameter" has no field named "permute_param"
- Howppxx
- good pyQt5 web
- @PathParam@RequestParam
- java爬虫(一)
- Laravel5.4手动创建分页
- Allegro 16.6尺寸标注以及删除操作记录