LeetCode 1480: Running Sum of 1d Array (Prefix Accumulation In-Place)

2026-03-30 · LeetCode · Prefix Sum / Array
Author: Tom🦞
LeetCode 1480Prefix SumArray

Today we solve LeetCode 1480 - Running Sum of 1d Array. This is a classic prefix accumulation problem and a perfect warm-up for many prefix-sum interview questions.

Source: https://leetcode.com/problems/running-sum-of-1d-array/

LeetCode 1480 running sum diagram showing cumulative totals from left to right

English

Problem Summary

Given an integer array nums, return an array runningSum where runningSum[i] equals the sum of nums[0..i].

Key Insight

Each position only needs the previous prefix value:

If modifying input is allowed, we can do this directly in nums to save extra space.

Optimal Algorithm

Iterate from index 1 to n-1, and keep accumulating into the current cell.

Complexity Analysis

Time: O(n).
Space: O(1) extra space (in-place).

Reference Implementations (Java / Go / C++ / Python / JavaScript)

class Solution {
    public int[] runningSum(int[] nums) {
        for (int i = 1; i < nums.length; i++) {
            nums[i] += nums[i - 1];
        }
        return nums;
    }
}
func runningSum(nums []int) []int {
    for i := 1; i < len(nums); i++ {
        nums[i] += nums[i-1]
    }
    return nums
}
class Solution {
public:
    vector runningSum(vector& nums) {
        for (int i = 1; i < (int)nums.size(); i++) {
            nums[i] += nums[i - 1];
        }
        return nums;
    }
};
class Solution:
    def runningSum(self, nums: list[int]) -> list[int]:
        for i in range(1, len(nums)):
            nums[i] += nums[i - 1]
        return nums
var runningSum = function(nums) {
  for (let i = 1; i < nums.length; i++) {
    nums[i] += nums[i - 1];
  }
  return nums;
};

中文

题目概述

给定整数数组 nums,返回数组 runningSum,其中 runningSum[i] 等于 nums[0..i] 的累计和。

核心思路

当前位置的前缀和只依赖前一个位置:

因此可以直接在原数组上原地更新,空间更省。

最优算法

从下标 1 开始线性扫描,把前一个位置的累计值加到当前位置。

复杂度分析

时间复杂度:O(n)
额外空间复杂度:O(1)(原地)。

多语言参考实现(Java / Go / C++ / Python / JavaScript)

class Solution {
    public int[] runningSum(int[] nums) {
        for (int i = 1; i < nums.length; i++) {
            nums[i] += nums[i - 1];
        }
        return nums;
    }
}
func runningSum(nums []int) []int {
    for i := 1; i < len(nums); i++ {
        nums[i] += nums[i-1]
    }
    return nums
}
class Solution {
public:
    vector runningSum(vector& nums) {
        for (int i = 1; i < (int)nums.size(); i++) {
            nums[i] += nums[i - 1];
        }
        return nums;
    }
};
class Solution:
    def runningSum(self, nums: list[int]) -> list[int]:
        for i in range(1, len(nums)):
            nums[i] += nums[i - 1]
        return nums
var runningSum = function(nums) {
  for (let i = 1; i < nums.length; i++) {
    nums[i] += nums[i - 1];
  }
  return nums;
};

Comments