You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

LeetCode前K个高频元素问题:哈希表统计频率出错求助

错误原因分析

你的代码核心错误在于遍历数组时混淆了元素值和数组索引:

  • 当执行for x in nums时,x本身就是数组中的元素(比如第一次循环x是1,第二次还是1,以此类推),但你在判断和更新哈希表时,错误地使用了nums[x]——这是把x当成数组的索引去取值,而非直接用x作为哈希表的键。
  • 举个实际执行的例子:第一次循环x=1,nums[x]即nums[1],值为1;第二次x=1,nums[x]还是1;第三次x=1,依旧是1;第四次x=2,nums[2]是1;第五次x=2,nums[2]是1;第六次x=3,nums[3]是2。这就导致你统计的是nums[x]这个值的出现次数,而非原数组元素x的次数,最终得到错误结果。
修正后的代码

把所有nums[x]替换成x即可得到正确统计结果:

nums = [1,1,1,2,2,3]
iterations = {}

for x in nums:
    if x in iterations:
        iterations[x] += 1
    else:
        iterations[x] = 1

print(iterations)  # 输出: {1: 3, 2: 2, 3: 1}

另外,Python里可以用更简洁的写法实现计数逻辑:

  • 用collections.defaultdict简化初始化:
from collections import defaultdict

nums = [1,1,1,2,2,3]
iterations = defaultdict(int)

for x in nums:
    iterations[x] += 1

print(dict(iterations))
  • 不用额外模块的写法:
nums = [1,1,1,2,2,3]
iterations = {}

for x in nums:
    iterations[x] = iterations.get(x, 0) + 1

print(iterations)

内容的提问来源于stack exchange,提问作者TheOdinBorson

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.03 08:34:54