查找数组重复数的C++代码在测试用例报错,请求分析逻辑问题
你的代码逻辑错误解析
这段代码的问题在于只检查了连续相邻的元素对,没有遍历所有可能的元素组合,导致非相邻的重复项无法被检测到。
拿测试用例[3,1,3,4,2]来说,代码的执行流程是这样的:
- 第一次循环:
pin=0,i=1,对比nums[0](3)和nums[1](1),不相等,pin自增为1 - 第二次循环:
pin=1,i=2,对比nums[1](1)和nums[2](3),不相等,pin自增为2 - 第三次循环:
pin=2,i=3,对比nums[2](3)和nums[3](4),不相等,pin自增为3 - 第四次循环:
pin=3,i=4,对比nums[3](4)和nums[4](2),不相等,pin自增为4,循环结束
整个过程里,代码从来没对比过nums[0]和nums[2]这两个值都是3的元素,自然找不到重复项,最后返回了错误的-1。
本质上,你的代码逻辑是错误的——它没有实现“检查数组中所有元素对是否重复”的逻辑,而是只做了一轮相邻元素的单次比对,完全不符合题目中重复数可能出现在任意位置的要求。
内容的提问来源于stack exchange,提问作者user19709690
相关产品推荐
相关产品推荐

