leetcode_347. 前 K 个高频元素
2020-09-07 10:00
190 查看
目录
一、题目要求
给定一个非空的整数数组,返回其中出现频率前 k 高的元素。
示例 1:
输入: nums = [1,1,1,2,2,3], k = 2
输出: [1,2]
示例 2:
输入: nums = [1], k = 1
输出: [1]
提示:
你可以假设给定的 k 总是合理的,且 1 ≤ k ≤ 数组中不相同的元素的个数。
你的算法的时间复杂度必须优于 O(n log n) , n 是数组的大小。
题目数据保证答案唯一,换句话说,数组中前 k 个高频元素的集合是唯一的。
你可以按任意顺序返回答案。
二、解题思路
1.用dict存储数字对应的个数
2.按照value即出现次数排序
3.用list存储排序之后的dict的key值
4.取list中前k个数
三、代码
[code]class Solution: def topKFrequent(self, nums, k: int): res = [] num_count_dict = {} for num in nums: if num in num_count_dict: num_count_dict[num] += 1 else: num_count_dict[num] = 1 sorted_num_count_dict = sorted(num_count_dict.items(), key=lambda x: x[1], reverse=True) for (num, count) in sorted_num_count_dict: res.append(num) if k <= len(res): return res[:k] else: return res if __name__ == '__main__': nums = [1,1,1,2,2,3] k = 2 s = Solution() ans = s.topKFrequent(nums, k) print(ans)悲恋花丶无心之人 CSDN认证博客专家 TensorFlow 深度学习 神经网络 计算机视觉在读研究生,熟悉Pytorch,MXNet,TensorFlow,Keras等深度学习框架,主要涉及的领域有目标检测,语义分割,超分辨率重建,行人重识别等。
相关文章推荐
- LeetCode-Python-347. 前K个高频元素
- LeetCode 347. 前K个高频元素
- LeetCode解析---347. 前 K 个高频元素
- Leetcode 347. 前K个高频元素 解题思路及C++实现
- Leetcode 刷题之路 之 算法思想 二、排序 : 2) 347. 前 K 个高频元素
- leetcode347. 前K个高频元素
- leetcode-347. 前K个高频元素
- leet347. 前K个高频元素
- LeetCode--347. Top K Frequent Elements(前K个高频元素)Python
- [LeetCode] 347. Top K Frequent Elements 前K个高频元素
- [LeetCode] Top K Frequent Elements 前K个高频元素
- leetcode 刷题记录(高频算法面试题汇总)--存在重复元素
- 【LeetCode题解】347_前K个高频元素(Top-K-Frequent-Elements)
- leadcode的Hot100系列--347. 前 K 个高频元素--hash表+直接选择排序
- leetcode 刷题记录(高频算法面试题汇总)--前K个高频元素
- 跟着专注于计算机视觉的AndyJ的妈妈我学算法之每日一题leetcode347前 K 个高频元素
- LeetCode 347 前K个高频元素 Java
- leetcode-前K个高频元素
- 用python写leetcode【12】 -- 前K个高频元素(347)
- LeetCode18--4Sum--数组中某四个元素之和为某个输入的数值,输出这四个元素的值,并且这个四元组唯一