Running Sum of 1D Array [Easy] — Prefix Sum

Sanjeev SharmaSanjeev Sharma
1 min read

Advertisement

Problem Statement

Given an array nums, return the running sum where runningSum[i] = sum(nums[0]…nums[i]).

Input: [1,2,3,4]Output: [1,3,6,10]
Input: [1,1,1,1,1]Output: [1,2,3,4,5]

Solutions

C

int* runningSum(int* nums, int n, int* returnSize) {
    *returnSize=n;
    for(int i=1;i<n;i++) nums[i]+=nums[i-1];
    return nums;
}

C++

vector<int> runningSum(vector<int>& nums) {
    for(int i=1;i<nums.size();i++) nums[i]+=nums[i-1];
    return nums;
}

Java

public int[] runningSum(int[] nums) {
    for(int i=1;i<nums.length;i++) nums[i]+=nums[i-1];
    return nums;
}

JavaScript

var runningSum = function(nums) {
    for(let i=1;i<nums.length;i++) nums[i]+=nums[i-1];
    return nums;
};

Python

import itertools
def runningSum(nums: list[int]) -> list[int]:
    return list(itertools.accumulate(nums))

Complexity

  • Time: O(n)
  • Space: O(1) in-place (or O(n) for output copy)

Key Use

Prefix sums power "range sum in O(1)": sum(i,j) = prefix[j+1]-prefix[i]

Advertisement

Sanjeev Sharma

Written by

Sanjeev Sharma

Full Stack Engineer · E-mopro