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

Rotate Array代码在VS Code运行正常但LeetCode不生效,求原因

问题原因及解决方法

你的代码在VS Code和LeetCode表现不同的核心原因是没有原地修改传入的原数组,而是给函数内部的局部变量重新赋值了新数组。

具体分析

  • JS参数传递规则:数组属于引用类型,函数参数接收的是原数组引用的副本。你在函数里写nums = [...secondSet, ...firstSet]时,只是让函数内部的nums变量指向了一个新创建的数组,完全没改动传入的原数组内容。
  • VS Code的表现:你应该是在函数内部直接打印了重新赋值后的nums,所以看到的是新数组;但如果在函数外部打印nums1,结果还是原数组。
  • LeetCode的要求:LeetCode的旋转数组题目要求原地修改输入数组,它会检查你传入的原数组是否被修改,而非函数内部的局部变量。

正确的实现方式

方式一:使用splice+unshift原地修改

var rotate = function(nums, k) {
    k = k % nums.length; // 处理k大于数组长度的边界情况
    const secondPart = nums.splice(nums.length - k);
    nums.unshift(...secondPart);
};

方式二:通过遍历替换原数组元素

var rotate = function(nums, k) {
    const len = nums.length;
    k = k % len;
    const tempArr = [...nums]; // 保存原数组副本
    for (let i = 0; i < len; i++) {
        nums[(i + k) % len] = tempArr[i];
    }
};

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.14 03:19:52