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做好标记,以避免重复运算。然后再遍历根据前一次做好的标记依次往后加。
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
Last updated
Was this helpful?