给你一个数组 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();
}