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

LeetCode寻找唯一数问题:代码在[1,0,1]测试用例失败原因咨询

代码在nums=[1,0,1]测试用例中失败的原因

我们一步步拆解这个测试用例的执行流程,就能明白问题所在:

初始状态:nums = [1,0,1],i = 0

  1. 第一次循环

    • 计算nums.count(nums[0]),也就是统计数组中1的数量,结果是2,进入else分支
    • 执行nums.remove(nums[0]),移除数组中第一个1,此时nums变为[0,1]
    • i自增为1
  2. 第二次循环

    • 当前nums是[0,1],i=1,取nums[1]的值为1
    • 计算nums.count(1)结果是1,直接返回1,但正确答案应该是0

错误根源

  • 索引与数组结构不匹配:移除元素后数组长度缩短,但i仍持续递增,导致跳过了本该检查的元素。原数组中索引1的0在第一个1被移除后,变成了新数组的索引0,但i直接跳到了1,完全没检查这个0。
  • remove方法的副作用:nums.remove(x)只会移除数组中第一个匹配x的元素,这会打乱原数组的元素顺序和索引对应关系,后续的索引操作逻辑彻底失效。

补充说明

部分测试用例能通过纯属巧合,比如当重复元素连续排列、唯一元素在数组末尾等场景,刚好让i的递增逻辑能命中目标元素,但这种写法本身逻辑就不严谨,完全依赖数组元素的排列顺序,不具备通用性。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.13 22:25:24