力扣刷题记录2021.2.23 一维数组的动态和

题目描述

给你一个数组 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]


思路分析: 定义一个结果集数组result ,遍历nums数组,用while循环来计算result对应的每一个和;


代码详情

public class 一维动态数组的和 {
public int[] runningSum(int[] nums) {

int[] result = new int[nums.length];
int temp = 0;
for (int i = 0; i < nums.length; i++) {
temp = i;
int sum = 0;
while (temp >= 0) {
sum += nums[temp];
temp--;
}
result[i] = sum;
}
return result;
}
}
执行用时:2 ms, 在所有 Java 提交中击败了13.89%的用户
内存消耗:38.9 MB, 在所有 Java 提交中击败了5.70%的用户

优化
//优化版,直接计算nums和,当前位置的和就是当前值+前一个的值

public int[] runningSum1(int[] nums) {
for (int i = 1; i < nums.length; i++) {
nums[i] += nums[i - 1];
}
return nums;
}
执行用时:0 ms, 在所有 Java 提交中击败了100.00%的用户
内存消耗:38.7 MB, 在所有 Java 提交中击败了30.93%的用户
原文地址:https://www.cnblogs.com/spx88/p/14437331.html