这个应该很容易就想到,runningSum
其实就是一个累加序列,runningSum[i] = nums[0] + nums[1] + ... + nums[i]
,其实就是数学中的求和数列的概念。因此,在这里利用一个递推runningSum[i] = runningSum[i-1] + nums[i]
即可一个for循环搞定。
时间复杂度: O(n), 空间复杂度:O(n)
所以这里可以再优化一下,事实上在计算runningSum[i]
的时候,nums[0...n-1]
已经没有用了,除了要拿出来nums[i]
算一遍,因此runningSum
数组可以直接存放在nums
数组中,最终代码如下
class Solution {
public int[] runningSum(int[] nums) {
int len = nums.length;
for (int i = 1; i < len; i++)
nums[i] = nums[i-1] + nums[i];
return nums;
}
}