1480-一维数组的动态和
给你一个数组 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])。
代码
1 | class Solution { |
1 | class Solution { |
1 | public class Solution { |
1 | int* runningSum(int* nums, int numsSize, int* returnSize) { |
1 | class Solution: |
1 | var runningSum = function(nums) { |
1 | func runningSum(nums []int) []int { |
复杂度分析
时间复杂度:O(n),其中 n 是给定数组长度。
空间复杂度:O(1)。我们只需要常数的空间保存若干变量。
Comments