LeetCode数组前缀和问题:输出数组开头多余逗号的排查与解决
问题原因分析
你的代码出现开头多余逗号的问题,本质是数组索引操作错误:
- 你初始化
output为长度等于nums的数组(比如输入长度4时,output初始是[empty × 4]),但循环里i从1开始,一直到nums.length(也就是4),然后给output[i]赋值——这就导致:output[0]始终未被赋值,保持undefined;- 给
output[4]赋值时,JavaScript会自动把数组长度扩展到5,此时数组变成[undefined, 1, 3, 6, 10],在输出时undefined的位置就会显示为开头的空值(逗号前无内容)。
修正方案
把循环的索引逻辑改成从0开始,对应output的每个索引位置:
/** * @param {number[]} nums * @return {number[]} */ var runningSum = function(nums) { let output = new Array(nums.length); let sum = 0; // 从i=0开始遍历到nums.length-1 for (let i = 0; i < nums.length; i++) { sum += nums[i]; output[i] = sum; } return output; };
或者更简洁的写法(直接在原数组上修改,节省空间,LeetCode也允许):
var runningSum = function(nums) { for (let i = 1; i < nums.length; i++) { nums[i] += nums[i-1]; } return nums; };
内容的提问来源于stack exchange,提问作者Piotrek940
相关产品推荐
相关产品推荐

