1480. 一维数组的动态和 #
- 标签:数组、前缀和
- 难度:简单
题目大意 #
描述:给定一个数组 nums
。
要求:返回数组 nums
的动态和。
说明:
- 动态和:数组前
i
项元素和构成的数组,计算公式为runningSum[i] = sum(nums[0] … nums[i])
。
示例:
- 示例 1:
|
|
- 示例 2:
|
|
解题思路 #
思路 1:递推 #
根据动态和的公式 runningSum[i] = sum(nums[0] … nums[i])
,可以推导出:
$runningSum = \begin{cases} nums[0], & i = 0 \cr runningSum[i - 1] + nums[i], & i > 0\end{cases}$
则解决过程如下:
- 新建一个长度等于
nums
的数组res
用于存放答案。 - 初始化
res[0] = nums[0]
。 - 从下标
1
开始遍历数组nums
,递推更新res[i] = res[i - 1] + nums[i]
。 - 遍历结束,返回
res
作为答案。
思路 1:代码 #
|
|
思路 1:复杂度分析 #
- 时间复杂度:$O(n)$。一重循环遍历的时间复杂度为 $O(n)$。
- 空间复杂度:$O(n)$。如果算上答案数组的空间占用,则空间复杂度为 $O(n)$。不算上则空间复杂度为 $O(1)$。