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

求列表中重复次数最多元素出现次数的函数问题排查

问题排查:列表重复次数统计函数逻辑错误

问题根源分析

你的代码存在两处核心逻辑错误,导致第二个测试用例输出异常:

  1. 错误的count参数逻辑
    关键语句 run = a.count(a[j] == i) 完全偏离了统计元素出现次数的目标:

    • a[j] == i 会生成布尔值(True/False),而Python中True等价于1、False等价于0,所以a.count(...)实际统计的是列表中1或0的数量,而非当前元素a[j]的出现次数。
    • 第一个测试用例巧合输出正确,是因为列表里包含元素1:当a[j]是4且i等于4时,a[j]==i为True,a.count(True)等于a.count(1)=1,满足run==1的条件,run2会累加3次(对应4出现的次数)。
    • 第二个测试用例里没有1,a.count(True)始终为0,run==1永远不成立,run2一直是0,最终返回0。
  2. 冗余且错误的内层循环
    内层for i in a循环完全没必要——你本来是想统计a[j]的出现次数,却遍历每个元素重复计算,逻辑混乱。

排查步骤建议

  • 打印中间变量调试:在循环中加入print(a[j], a[j]==i, run),能直观看到run的值是否符合预期,比如第二个测试用例中run始终为0,就能快速定位问题。
  • 回归需求拆解逻辑:你的需求是「统计每个元素的出现次数,取最大值」,正确的逻辑应该是:
    • 遍历列表中的每个唯一元素(或直接遍历所有元素,注意去重避免重复计算);
    • 对每个元素调用a.count(元素)得到出现次数;
    • 记录最大的次数。

修正后的示例代码

基础版(修复原逻辑)

def longest_repetition(a):
    longest = 0
    # 遍历每个唯一元素,避免重复计算
    for num in set(a):
        current_count = a.count(num)
        if current_count > longest:
            longest = current_count
    return longest

高效版(用Counter统计)

from collections import Counter

def longest_repetition(a):
    if not a:
        return 0
    count_dict = Counter(a)
    return max(count_dict.values())

测试这两个版本,第二个测试用例会正确返回4。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.09 18:05:38