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

LeetCode删除有序数组重复项运行后尾部重复值变化原因咨询

问题解答

核心原因

你对数组尾部元素的预期没有逻辑支撑,你的代码从未修改过返回长度之外的数组位置,尾部元素会保留原始数组的对应值。

代码执行流程复盘

输入原始数组为 [1,1,1,3,5,5,7],方法执行过程如下:

  • 初始状态:数组长度n=7,结果指针result=0
  • 遍历下标i=0:判定与下一位值相等,跳过,不修改数组
  • 遍历下标i=1:判定与下一位值相等,跳过,不修改数组
  • 遍历下标i=2:判定与下一位值不等,执行nums[0] = 1,result变为1
  • 遍历下标i=3:判定与下一位值不等,执行nums[1] = 3,result变为2
  • 遍历下标i=4:判定与下一位值相等,跳过,不修改数组
  • 遍历下标i=5:判定与下一位值不等,执行nums[2] = 5,result变为3
  • 遍历下标i=6:无下一位元素,直接执行nums[3] =7,result变为4

整个过程你仅修改了数组下标0、1、2、3的位置,下标4、5、6的内容完全没有改动,原始数组这三个位置的值就是5、5、7,因此打印完整数组得到的结果就是[1,3,5,7,5,5,7],符合代码逻辑。

补充说明

LeetCode的《Remove Duplicates from Sorted Array》题目本身不要求修改返回长度之外的尾部元素,判题时仅校验返回长度对应的前N位元素是否符合要求,你的解法本身是正确的,无需关注尾部元素的取值。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 18:06:00