For this Leetcode problem we write an algorithm that accepts an input of an integer array `nums`

, and output an integer array which contains the elements from `nums`

, but with each item updated to reflect the running sum.

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`

## Psuedo-code

The title, description, and the supporting inputs & outputs of this algorithm show us that we essentially need to create a tally or counter of some sort that increments by the value of each item we iterate through in the provided `nums`

array. Then, for every item in the `nums`

array, we must update it to reflect the running sum at the given point, and then return an array of the same length, but with all of the values updated accordingly.

Our psuedo-code should be rather cut and dry, like so:

```
// create a variable to keep track of the running sum/tally
// create a new int[] array to store our updated values
// iterate through the nums array
// for every iteration, increment the running sum
// then update the value of the current index to be the running sum
// return the array of running sums
```

## Solving the Algorithm

Now that we've walked through our psuedo-code, let's solve the problem in code, starting with the stub class we're provided:

### 1. Initialize `runningSum`

variable and `runningSums`

array

By initializing a `runningSum`

variable, we will then be able to maintain some sort of reference or pointer to the current tally of values we've iterated to at any given point. This will allow us to set the values accordingly in the `runningSums`

array which will be the return value from our function.

```
class Solution {
public int[] runningSum(int[] nums) {
// 1. variable to keep track of running sum\
int runningSum = 0;
// and array to keep track of updated values
int[] runningSums = new int[nums.length];
}
}
```

### 2. Iterate through `sums`

array

Creating a loop to iterate through the `nums`

input array allows us to do some computation on every element of the array in order to generate the correct values to be used in the `runningSums`

output array.

```
class Solution {
public int[] runningSum(int[] nums) {
// 1. variable to keep track of running sum\
int runningSum = 0;
// and array to keep track of updated values
int[] runningSums = new int[nums.length];
// 2. iterate through nums array
for (int i = 0; i < nums.length; i++) {
// do some magic
}
}
}
```

### 3. Increment `runningSums`

with each pass

As we iterate through each index of `nums`

, we must first increment the value of `runningSums`

so that it reflects the current tally. Afterwards, we will update the corresponding index of `runningSums`

to reflect the `runningSum`

for this given iteration in the loop.

```
class Solution {
public int[] runningSum(int[] nums) {
// 1. variable to keep track of running sum\
int runningSum = 0;
// and array to keep track of updated values
int[] runningSums = new int[nums.length];
// 2. iterate through nums array
for (int i = 0; i < nums.length; i++) {
// 3. increment runningSum by the value of
// the current index in nums array
runningSum = runningSum + nums[i];
// then add the value to our runningSums array
runningSums[i] = runningSum;
}
}
}
```

### 4. Return the `runningSums`

array

Last but not least, we must return the `runningSums`

array from our function after we have generated the proper values.

```
class Solution {
public int[] runningSum(int[] nums) {
// 1. variable to keep track of running sum\
int runningSum = 0;
// and array to keep track of updated values
int[] runningSums = new int[nums.length];
// 2. iterate through nums array
for (int i = 0; i < nums.length; i++) {
// 3. increment runningSum by the value of
// the current index in nums array
runningSum = runningSum + nums[i];
// then add the value to our runningSums array
runningSums[i] = runningSum;
}
// 4. return runningSums array
return runningSums;
}
}
```

## Recap and Live Example

This LeetCode problem helps us exercise some fundamental skills that will be used throughout many algorithms that we solve going forward.

View the REPL for this problem here:

https://repl.it/@TimWheeler/RunningSumOf1DArray

Shoot me an email at `tim@timwheeler.com`

with any questions and if you enjoyed this post make sure to comment and subscribe below! 👇