一维数组动态和
给你一个数组 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]
来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/running-sum-of-1d-array
思路比较简单,就是新建数组,然后将nums的之前的元素和存入新建的数组中。
class Solution {
public int[] runningSum(int[] nums) {
int[] a = new int[nums.length];
for(int i=0;i<nums.length;i++){
if(i==0){
a[0]=nums[0];
}
else
{
int j=i;
while(j>=0)
{a[i]=nums[j]+a[i];
j--;
}
}
}
return a;
}
}
比较容易理解,但是内存消耗和时间消耗比较大。
看了题解,没有必要再申请额外的空间,只需要在原数组上进行修改即可,从i=1开始,将每一个nums的元素改成之前的元素相加,这样在遇到第i个元素时,只需要将第i个元素加入就可以。
class Solution {
public int[] runningSum(int[] nums) {
for(int i=1;i<nums.length;i++){
nums[i]+=nums[i-1];
}
return nums;
}
}