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

使用C#实现样本众数查找功能时代码输出错误,问题出在哪里

代码存在两处核心逻辑错误

  • 第一处:第二个遍历字典的循环中,你往结果集添加的是出现次数max,而非对应的数组元素key,这是输出结果为1、3的直接原因,这两个值实际是过程中记录的最高出现次数,不是数组里的元素。
  • 第二处:缺少两个关键逻辑分支处理:
    1. 当找到出现次数高于当前max的元素时,没有清空之前存入的旧结果,会把历史错误值保留下来
    2. 没有判断出现次数和当前max相等的场景,多个众数的情况下,后续平次数的元素不会被加入结果

修正后的代码

static List<int> Mode(int[] array)
{
    if (array.Length == 0)
    {
        throw new ArgumentException("Sample can't be empty");
    }
    List<int> result = new List<int>();
    var counts = new Dictionary<int, int>();
    int max = 0;
    // 统计元素出现次数的逻辑无问题
    foreach (int num in array)
    {
        counts[num] = counts.ContainsKey(num) ? counts[num] + 1 : 1;
    }

    foreach (var key in counts.Keys)
    {
        if (counts[key] > max)
        {
            max = counts[key];
            result.Clear();
            result.Add(key);
        }
        else if (counts[key] == max)
        {
            result.Add(key);
        }
    }

    return result;
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 05:45:00