Ray-56 / like-algorithms

每天一道算法题,突破自己
2 stars 1 forks source link

✅1480. 一维数组的动态和 #162

Open Ray-56 opened 4 years ago

Ray-56 commented 4 years ago

1480. 一维数组的动态和

给你一个数组 nums 。数组「动态和」的计算公式为:runningSum[i] = sum(nums[0]…nums[i]) 。

请返回 nums 的动态和。

示例1:

输入:nums = [1,2,3,4]
输出:[1,3,6,10]
解释:动态和计算过程为 [1, 1+2, 1+2+3, 1+2+3+4] 。

示例2:

输入:nums = [1,1,1,1,1]
输出:[1,2,3,4,5]
解释:动态和计算过程为 [1, 1+1, 1+1+1, 1+1+1+1, 1+1+1+1+1] 。

示例3:

输入:nums = [3,1,2,10,1]
输出:[3,4,6,16,17]
Ray-56 commented 4 years ago

全局变量保存状态

/**
 * @param {number[]} nums
 * @return {number[]}
 */
var runningSum = function(nums) {
    if (!nums.length) return [];
    const ret = [nums[0]];
    let sum = nums[0];
    for (let i = 1; i < nums.length; i++) {
        ret.push(sum+=nums[i]);
    }

    return ret;
};

动态规划

/**
 * @param {number[]} nums
 * @return {number[]}
 */
var runningSum = function(nums) {
    for (let i = 1, len = nums.length; i < len; i++) {
        nums[i] = nums[i] + nums[i - 1];
    }
    return nums;
};