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

C语言实现containsDuplicate数组重复判断函数输出错误如何修正?

现有代码存在的问题
  • 提前返回逻辑错误:内层循环中仅完成一次元素比较就直接返回结果,没有遍历所有元素对,完全没有覆盖到后续可能存在的重复场景。
  • 内层遍历下标错误:j固定从1开始遍历,当i≥1时会出现i和j相等的情况,自己和自己比较必然相等,会触发误判返回true。
  • 存在冗余变量:定义的repeating和nonrepeating变量没有实际意义,直接返回布尔字面量即可简化代码。
  • 最终返回值错误:所有元素遍历完成后确认无重复的场景下,应该返回false,原代码返回true和需求完全相反。
修改后的代码

调整内层循环起始下标为i+1,仅当检测到相等元素时立即返回true,所有元素对遍历完成后无重复再返回false即可:

bool containsDuplicate(int* nums, int numsSize){
    for(int i = 0; i < numsSize; i++){
        // 仅和i之后的元素比较,避免重复比较、自己和自己比较的问题
        for(int j = i + 1; j < numsSize; j++){
            if(nums[i] == nums[j]){
                return true;
            }
        }
    }
    // 全量遍历无重复返回false
    return false;
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.04 05:06:05