LeetCode旋转数组题:console.log值正确但函数return结果错误怎么办
这道LeetCode题的判题逻辑要求你原地修改传入的nums数组,不需要返回新数组。你本地测试时拿到的是return的x的值,所以结果正确,但LeetCode判题时不会读取函数返回值,只会校验你传入的nums数组的最终内容。你当前的代码只是基于nums拷贝出了新数组x做修改并返回,完全没有改动原nums数组,所以系统读取原数组校验结果时,拿到的还是未修改的初始值,自然就会报错。
你只需要在return x之前,把x的内容覆盖到原nums数组即可,参考修改代码:
var rotate = function(nums, k) { let n=0 let temp = [] let l =nums.length k=k%l let x = JSON.parse(JSON.stringify(nums)) while(n<k){ let last = x[l-1] for(let i=1;i<l;i++){ temp[i] = x[i-1] } temp[0]=last x=JSON.parse(JSON.stringify(temp)) n++ } // 新增代码:覆盖原数组内容 for (let i = 0; i < l; i++) { nums[i] = x[i] } };
你也可以用数组splice方法简化原数组替换逻辑,替换上面的for循环即可:
nums.splice(0, nums.length, ...x)
内容的提问来源于stack exchange,提问作者Sanna
相关产品推荐
相关产品推荐

