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

LeetCode 26题:代码在VS Code正常却无法通过LeetCode的原因

问题原因分析

你的代码在VS Code能正常运行但无法通过LeetCode测试,核心是完全不符合题目规定的解题规则,具体问题如下:

1. 未原地修改输入数组

LeetCode 26题要求原地修改传入的有序数组,即直接修改原始的nums数组本身。你代码里的nums = [...new Set(nums)]是创建了一个去重后的新数组,让函数内部的nums变量指向这个新数组,但原输入数组根本没有被修改。LeetCode判题系统会检查传入的原始数组内容,所以你的操作对判题来说完全无效。

2. 返回值不符合要求

题目明确要求返回去重后元素的个数k(数字类型),但你返回的是k + '\n' + nums这种拼接后的字符串,和题目要求的返回类型、内容完全不匹配。

3. 全局变量带来的副作用

你定义了全局变量k,LeetCode测试时会多次调用removeDuplicates函数,全局变量会保留上一次测试的结果,导致后续测试用例的结果出错。

符合要求的解题示例

要用双指针法原地修改数组,满足题目要求:

const removeDuplicates = nums => {
    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];
        }
    }
    return slow + 1;
}

这段代码通过慢指针记录去重数组的末尾位置,快指针遍历数组,遇到不同元素就更新慢指针位置并赋值,最终返回的慢指针+1就是去重元素个数,同时原数组前k个元素就是去重后的结果。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.17 17:25:57