跳至主要內容

1480. 一维数组的动态和


1480. 一维数组的动态和

🟢   🔖  数组 前缀和  🔗 力扣open in new window LeetCodeopen in new window

题目

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

解题思路

通过一次遍历并原地修改数组来实现,维护一个累积和变量,逐步更新当前元素的值,避免使用额外空间。

  1. 初始化累积和变量 sum 为 0。
  2. 遍历数组:
    • 将当前元素的值加到 sum 中。
    • 更新当前元素为累积和的值。
  3. 返回修改后的数组。

复杂度分析

  • 时间复杂度: 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;
};