LeetCode 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]

前缀和:一个数组的某项下标之前(包括此项元素)的所有数组元素的和

/**
 * 前缀和
 *
 * @param nums
 * @return
 */
public static int[] runningSum(int[] nums) {
    if (nums == null || nums.length == 0) return new int[]{};

    int len = nums.length;
    int[] res = new int[len];
    res[0] = nums[0];
    for (int i = 1; i < len; i++) {
        res[i] = res[i - 1] + nums[i];
    }
    return res;
}

测试用例

public static void main(String[] args) {
    int[] nums = new int[]{1, 2, 3, 4};
    int[] ans = RunningSum.runningSum(nums);
    System.out.print("RunningSum demo01 result : ");
    for (int tmp : ans) {
        System.out.print(tmp + " ");
    }
    System.out.println();

    nums = new int[]{1, 1, 1, 1, 1};
    ans = RunningSum.runningSum(nums);
    System.out.print("RunningSum demo02 result : ");
    for (int tmp : ans) {
        System.out.print(tmp + " ");
    }
    System.out.println();

    nums = new int[]{3, 1, 2, 10, 1};
    ans = RunningSum.runningSum(nums);
    System.out.print("RunningSum demo03 result : ");
    for (int tmp : ans) {
        System.out.print(tmp + " ");
    }
    System.out.println();
}
posted @ 2021-08-28 11:38  枫叶艾辰  阅读(48)  评论(0编辑  收藏  举报