370. Range Addition

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;
    }
};

results matching ""

    No results matching ""