1480. 一维数组的动态和
1480. 一维数组的动态和
题目
Given an array nums
. We define a running sum of an array as runningSum[i] = sum(nums[0]…nums[i])
.
Return the running sum of nums
.
Example 1:
Input: nums = [1,2,3,4]
Output: [1,3,6,10]
Explanation: Running sum is obtained as follows: [1, 1+2, 1+2+3, 1+2+3+4].
Example 2:
Input: nums = [1,1,1,1,1]
Output: [1,2,3,4,5]
Explanation: Running sum is obtained as follows: [1, 1+1, 1+1+1, 1+1+1+1, 1+1+1+1+1].
Example 3:
Input: nums = [3,1,2,10,1]
Output: [3,4,6,16,17]
Constraints:
1 <= nums.length <= 1000
-10^6 <= nums[i] <= 10^6
题目大意
给你一个数组 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
解题思路
通过一次遍历并原地修改数组来实现,维护一个累积和变量,逐步更新当前元素的值,避免使用额外空间。
- 初始化累积和变量
sum
为 0。 - 遍历数组:
- 将当前元素的值加到
sum
中。 - 更新当前元素为累积和的值。
- 将当前元素的值加到
- 返回修改后的数组。
复杂度分析
- 时间复杂度:
O(n)
,只需遍历数组一次。 - 空间复杂度:
O(1)
,原地修改,不使用额外空间。
代码
/**
* @param {number[]} nums
* @return {number[]}
*/
var runningSum = function (nums) {
let sum = 0;
for (let i = 0; i < nums.length; i++) {
sum += nums[i];
nums[i] = sum;
}
return nums;
};