Running Sum of 1D Array [Easy] — Prefix Sum
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