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

LeetCode有序数组去重题:Javascript中return与console.log结果不一致

问题根源

  • 你做的是LeetCode第26题「删除有序数组中的重复项」,这道题的判题规则要求原地修改输入的nums数组,不能新建额外数组存储结果,同时要求返回值是去重后数组的长度(数字类型)。
  • 你现在的代码逻辑是自行创建了newNums数组存储去重结果,并且直接返回这个数组,既没有修改原输入的nums,返回值类型也和题目要求的数字不匹配,所以console.log能输出你预期的去重数组,但LeetCode判题系统读不到正确的结果,才会判定返回错误。
  • 另外你代码里的空数组判断逻辑是冗余的,就算nums长度为0,后续的循环也不会执行,newNums本来就是空数组,不需要额外赋值。

符合题目要求的实现

/**
 * @param {number[]} nums
 * @return {number}
 */
var removeDuplicates = function (nums) {
  // 空数组直接返回0
  if (nums.length === 0) return 0
  // 慢指针 记录去重后元素的存储位置
  let slow = 0
  for (let fast = 1; fast < nums.length; fast++) {
    // 遇到不重复的元素 就移动慢指针 赋值
    if (nums[fast] !== nums[slow]) {
      slow++
      nums[slow] = nums[fast]
    }
  }
  // 慢指针索引+1就是去重后数组的长度
  return slow + 1
};

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.06 21:54:02