回其中出现频率前 k 高的元素。示例 1:输入: nums = [1,1,1,2,2,3], k = 2输出: [1,2]示例 2:输入: nums = [1], k = 1
时间: 2024-11-23 14:30:31 浏览: 4
2022年1月20日刷题日记
这个问题是在询问如何找出数组`nums`中出现频率最高的前`k`个元素。这通常涉及到统计每个元素出现的次数,然后按照出现次数从高到低排序,并返回前`k`个最常见的元素。这个任务常常在数据结构和算法中遇到,特别是在处理大量数据时,为了节省空间,我们可能会选择使用哈希表(如Python中的collections.Counter)来快速计数,然后再进行排序。
Python代码示例:
```python
from collections import Counter
def topKFrequent(nums, k):
# 使用Counter计算每个元素的频率
counter = Counter(nums)
# 将键值对转换为元组列表,按频率降序排列
freq_list = sorted(counter.items(), key=lambda x: x[1], reverse=True)
# 返回前k个最频繁的元素及其频率
return [item[0] for item in freq_list[:k]]
```
对于给定的例子:
- 示例1:输入`nums = [1,1,1,2,2,3]`, `k = 2`,输出应该是 `[1, 2]`,因为1和2都出现了3次,是最常见的两个元素。
- 示例2:输入`nums = [1]`, `k = 1`,输出应该是 `[1]`,因为只有一个元素1。
阅读全文