347. Top K Frequent Elements
题目
Given an integer array nums
and an integer k
, return the k
most frequent elements. You may return the answer in any order.
Example 1:
Input: nums = [1,1,1,2,2,3], k = 2 Output: [1,2]
Example 2:
Input: nums = [1], k = 1 Output: [1]
Constraints:
1 <= nums.length <= 105
-104 <= nums[i] <= 104
k
is in the range[1, the number of unique elements in the array]
.- It is guaranteed that the answer is unique.
Follow up: Your algorithm's time complexity must be better than O(n log n)
, where n is the array's size.
Related Topics
思路
解法
py
from collections import Counter, defaultdict
# leetcode submit region begin(Prohibit modification and deletion)
class Solution:
def topKFrequent(self, nums: List[int], k: int) -> List[int]:
count = Counter(nums)
# Sort by frequency descending
return [num for num, freq in sorted(count.items(), key=lambda x: x[1], reverse=True)[:k]]
# leetcode submit region end(Prohibit modification and deletion)
复杂度分析
- 时间复杂度 O(NlogK)
- N 数组长度
- K 创建前 K 个的最频繁出现的元素的
- 空间复杂度 O(U + K)
- U counter 中独立元素的值
- K 最常见的元素的值