# 370. Range Addition

Assume you have an array of length **n** initialized with all **0**'s and are given **k** update operations.

Each operation is represented as a triplet: **\[startIndex, endIndex, inc]** which increments each element of subarray **A\[startIndex ... endIndex]** (startIndex and endIndex inclusive) with **inc**.

Return the modified array after all **k** operations were executed.

**Example:**

```
Input: length = 5, updates = [[1,3,2],[2,4,3],[0,2,-2]]
Output: [-2,0,3,5,3]
```

**Explanation:**

```
Initial state:
[0,0,0,0,0]

After applying operation [1,3,2]:
[0,2,2,2,0]

After applying operation [2,4,3]:
[0,2,5,5,3]

After applying operation [0,2,-2]:
[-2,0,3,5,3]
```

#### 解题要点：

同理1109，用DP思想，遍历一次先在start index和end index做好标记，以避免重复运算。然后再遍历根据前一次做好的标记依次往后加。

```python
class Solution(object):
    def getModifiedArray(self, length, updates):
        """
        :type length: int
        :type updates: List[List[int]]
        :rtype: List[int]
        """
        res = [0] * length
        for i, j, k in updates:
            res[i] += k
            if j < length - 1:
                res[j + 1] -= k
                
        for n in range(1, length):
            res[n] += res[n - 1]
        
        return res
```
