LeetCode: Top K Frequent Elements
来源:互联网 发布:中国网络安全法 编辑:程序博客网 时间:2024/05/20 10:13
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.
给一个非空的整数数组,返回k个最频繁的元素,算法时间复杂度要求低于O(nlogn)
解题思路:
考虑使用哈希表存储每个元素对应的出现次数,并利用桶排序的思想,将出现次数相同的元素放在同一个桶中。桶之间是有序的,最后从元素出现次数最多的桶开始遍历,取出其中元素,直到满足题目要求。算法时间复杂度为O(n)。
代码如下:
public List<Integer> getTopKFrequent(int[] nums, int k) {List<Integer>[] bucket = new List[nums.length + 1];Map<Integer, Integer> frequencyMap = new HashMap<Integer, Integer>();for (int n : nums) {frequencyMap.put(n, frequencyMap.getOrDefault(n, 0) + 1);}for (int key : frequencyMap.keySet()) {int frequency = frequencyMap.get(key);if (bucket[frequency] == null) {bucket[frequency] = new ArrayList<>();}bucket[frequency].add(key);}List<Integer> res = new ArrayList<>();for (int pos = bucket.length - 1; pos >= 0 && res.size() < k; pos--) {if (bucket[pos] != null) {res.addAll(bucket[pos]);}}return res;}
0 0
- 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: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 Top K Frequent Elements
- [leetcode]Top K Frequent Elements
- LeetCode: Top K Frequent Elements
- lletcode-236. Lowest Common Ancestor of a Binary Tree
- redis命令详解与使用场景举例——List
- jquery mobile 弹窗(一)
- 互联网公司数据分析/挖掘面试机器学习面到的题目
- gcc编译选项和makefile资源汇总
- LeetCode: Top K Frequent Elements
- (XGBoost)提升树入门介绍(Inrtoduction to Boosted Trees)
- English about computer 1
- Django学习6-mysql数据库使用1-安装与连接
- AlertDialog使用自定义的布局
- CSS属性选择器
- 欢迎使用CSDN-markdown编辑器
- windows版本的mysql无法远程连接服务器上的mysql的问题,错误代码10060
- 考研经验分享