jsvaScript菜鸟刷题第1天~《求数组动态和》

134 阅读1分钟

力扣新手村第一题: 求数组动态和

原题: 给你一个数组 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;
}

哈哈哈~