力扣新手村第一题: 求数组动态和
原题: 给你一个数组 nums 。数组「动态和」的计算公式为:runningSum[i] = sum(nums[0]…nums[i]) 。 请返回 nums 的动态和。
我发布的答案(虽然通过了case,但是看起来又臭又长。。。)
/**
* @param {number[]} nums
* @return {number[]}
*/
var runningSum = function (nums) {
let newArray = [];
newArray[0] = nums[0];
nums.forEach((item, index) => {
if (index > 0) {
let currentItem = item;
for (let cunt = 0; cunt < index; cunt++) {
currentItem = currentItem + nums[cunt];
}
newArray[index] = currentItem;
}
});
return newArray;
};
这是力扣官网给的答案(简洁明了)
let runningSum = function(nums) {
const len = nums.length;
for (let i = 1; i < len; i++) {
nums[i] += nums[i - 1];
}
return nums;
};
总结: 我只是为了解决case而编程,哭辽
但是我觉得官网给的答案不完美之处在于修改了入参,我们一般情况下不要在函数里面直接修改函数的入参,所以我个人觉得这样更好:
let runningSum = function (nums) {
//这里拷贝一个新的数组,用它来操作;
let cloneNums = [...nums];
let len = cloneNums.length;
for(let i = 1; i < len; i++){
cloneNums[i] += cloneNums[i-1];
}
return cloneNums;
}
哈哈哈~