Python 中前 K 个最常见元素
pythonserver side programmingprogramming更新于 2025/11/23 2:52:17
假设我们有一个非空的整数数组。我们必须返回第 k 个最常见元素。因此,如果元素为 [1,1,1,1,2,2,3,3,3] 且 k = 2,则结果将是
正式来说,该函数应该 −
- 如果存在 i、j、k,则返回 true
- 使得 arr[i] < arr[j] < arr[k] 给定 0 ≤ i < j < k ≤ n-1,否则返回 false。
为了解决这个问题,我们将遵循以下步骤 −
- num_freq = 一个空映射,freq_list := 一个空映射
- 对于 nums 中的每个元素 i
- 如果 i 不在 num_freq 中,则 num_freq[i] := 1,否则将 num_freq[i] 增加 1
- 对于 num_freq 映射中的每个键值对
- 如果 freq_list 中不存在值,则 freq_list[value] := 带有 [key] 的列表,否则将键插入 freq_list[value] 数组
- res := 空列表
- 对于 i := 长度数字降到 0
- 如果 i 在 freq_list 中,则将 freq_list[i] 的元素添加到 res 中
- 如果 res 的长度 >= k,则中断
- 返回 result
让我们看看下面的实现以便更好地理解 −
示例
class Solution(object):
def topKFrequent(self, nums, k):
number_frequency = {}
frequency_list ={}
for i in nums:
if i not in number_frequency:
number_frequency[i] = 1
else:
number_frequency[i] += 1
for key,value in number_frequency.items():
if value not in frequency_list:
frequency_list[value] = [key]
else:
frequency_list[value].append(key)
result = []
for i in range(len(nums),0,-1):
if i in frequency_list:
result.extend(frequency_list[i])
if len(result) >=k:
break
return result
ob1 = Solution()
print(ob1.topKFrequent([1,1,1,1,2,2,3,3,3], 2))
输入
[1,1,1,1,2,2,3,3,3] 2
输出
[1, 3]
相关文章
有用资源
python 参考教程 - 该教程包含有关 python 的更多信息:https://www.cainiaomax.com/python/

