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
相关产品推荐
相关产品推荐

