370. Range Addition
Difficulty: Medium
Topics: Array
Similar Questions:
Problem:
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] </pre>
Solutions:
class Solution {
public:
vector<int> getModifiedArray(int length, vector<vector<int>>& updates) {
vector<int> addition(length, 0);
for (auto& update : updates) {
int startIndex = update[0];
int endIndex = update[1];
int inc = update[2];
addition[endIndex] += inc;
if (startIndex - 1 >= 0) {
addition[startIndex - 1] -= inc;
}
}
vector<int> ret(length, 0);
for (int i = length - 1; i > 0; --i) {
ret[i] = addition[i];
addition[i-1] += addition[i];
}
return addition;
}
};