LeetCode提交旋转数组(Rotate Array)解答不被识别问题求助
LeetCode 旋转数组提交异常修复方案
核心问题
LeetCode 旋转数组题目要求原地修改输入的nums数组,不需要返回新数组。你当前代码仅生成了新的拼接数组ans,完全没有修改原始传入的nums对象,平台校验时读取的仍是未修改的原数组,因此判定输出错误。
待修复的细节问题
- 未处理k大于数组长度的边界场景:比如数组长度为7时,k=10和k=3的旋转效果完全一致,需要先对k做取余处理
- 循环变量
i、j未声明,属于隐式全局变量,严格模式下会触发报错 - 仅打印结果未修改原数组,不符合题目校验规则
- 你自己写在函数外的全局测试变量
k、nums提交时需要删掉,LeetCode会自动传入测试用例参数
修复后的完整代码
var rotate = function (nums, k) { // 处理k大于数组长度的边界情况 k = k % nums.length; var FN = []; var LN = []; // 循环变量加let声明,避免隐式全局 for (let i = 0; i < nums.length - k; i++) { FN.push(nums[i]); } for (let j = k; j > 0; j--) { LN.push(nums[nums.length - j]); } const ans = [].concat(LN, FN); // 原地修改原数组:先清空原数组,再把ans的内容全部塞进去 nums.length = 0; nums.push(...ans); };
内容的提问来源于stack exchange,提问作者john smith
相关产品推荐
相关产品推荐

