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

获取counter数组中数值最大的两个索引时代码结果异常求助

问题分析与代码修正

核心错误点

  • 混淆索引与数组值的比较逻辑:你将mostFrequent和secondMost存储为数组索引,但比较时错误地用counter[i](数组元素的数值)直接和mostFrequent(索引值)对比,完全颠倒了逻辑。正确的做法是用counter[i]和counter[mostFrequent](当前记录的最高频数值)进行比较。
  • 语法错误:mostFrequent = i语句末尾缺少分号,会导致编译失败。
  • 初始化潜在问题:初始将mostFrequent和secondMost设为0,若counter[0]并非数组中前两大的数值,可能干扰后续逻辑判断(不过核心问题还是比较逻辑错误)。

修正后的代码

int mostFrequent = 0;
int secondMost = 0;
for(int i = 0; i < 256; i++){
    if (counter[i] > counter[mostFrequent]) {
        secondMost = mostFrequent;
        mostFrequent = i; // 补充分号
    } else if (counter[i] < counter[mostFrequent] && counter[i] > counter[secondMost]){
        secondMost = i;
    }
}

额外说明

如果counter数组中存在多个索引对应相同的最大值,上述代码会保留第一个遇到的最大值索引。若需要处理并列最大值的场景,可以额外添加判断逻辑。另外,你已经确认counter数组内容正确,修正比较逻辑后应该能得到预期的32和101索引结果。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.30 14:17:38