1480-一维数组的动态和

Raphael Liu Lv10

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

提示:

  • 1 <= nums.length <= 1000
  • -10^6 <= nums[i] <= 10^6

方法一:原地修改

思路和算法

因为有 runningSum}[i] = \sum_{i=0}^{i} \textit{nums}[i]。

可以推导出:

\textit{runningSum}[i] =
\begin{cases}
\textit{nums}[0], &i = 0 \
\textit{runningSum}[i-1] + \textit{nums}[i], &i > 0
\end{cases}

这样我们可以从下标 1 开始遍历 nums 数组,每次让 nums}[i] 变为 nums}[i-1] + \textit{nums}[i] 即可(因为此时的 nums}[i-1] 即为 runningSum}[i-1])。

代码

[sol1-C++]
1
2
3
4
5
6
7
8
9
10
class Solution {
public:
vector<int> runningSum(vector<int>& nums) {
int n = nums.size();
for (int i = 1; i < n; i++) {
nums[i] += nums[i - 1];
}
return nums;
}
};
[sol1-Java]
1
2
3
4
5
6
7
8
9
class Solution {
public int[] runningSum(int[] nums) {
int n = nums.length;
for (int i = 1; i < n; i++) {
nums[i] += nums[i - 1];
}
return nums;
}
}
[sol1-C#]
1
2
3
4
5
6
7
8
9
public class Solution {
public int[] RunningSum(int[] nums) {
int n = nums.Length;
for (int i = 1; i < n; i++) {
nums[i] += nums[i - 1];
}
return nums;
}
}
[sol1-C]
1
2
3
4
5
6
7
int* runningSum(int* nums, int numsSize, int* returnSize) {
*returnSize = numsSize;
for (int i = 1; i < numsSize; i++) {
nums[i] += nums[i - 1];
}
return nums;
}
[sol1-Python3]
1
2
3
4
5
6
class Solution:
def runningSum(self, nums: List[int]) -> List[int]:
n = len(nums)
for i in range(1, n):
nums[i] += nums[i - 1]
return nums
[sol1-JavaScript]
1
2
3
4
5
6
7
var runningSum = function(nums) {
const n = nums.length;
for (let i = 1; i < n; i++) {
nums[i] += nums[i - 1];
}
return nums;
};
[sol1-Golang]
1
2
3
4
5
6
7
func runningSum(nums []int) []int {
n := len(nums)
for i := 1; i < n; i++ {
nums[i] += nums[i-1]
}
return nums
}

复杂度分析

  • 时间复杂度:O(n),其中 n 是给定数组长度。

  • 空间复杂度:O(1)。我们只需要常数的空间保存若干变量。

 Comments
On this page
1480-一维数组的动态和