Range Addition

给一个长度为length的数组和一个update[from, to, val]query. 求跑完query的结果.

这题用一个diff数组记录变化的起始和结果的地方, 这里可以看成累计频率的记录. 所以在结果的时候要把累积多余的val减去.

class Solution {
    public int[] getModifiedArray(int length, int[][] updates) {
        int[] diff = new int[length];
        for(int[] u : updates){
            diff[u[0]] += u[2];
            if(u[1] < length - 1)
                diff[u[1] + 1] -= u[2]; // remove the increament 
        }
        int cur = 0;
        int[] res = new int[length];
        for(int i = 0; i < length; i++){
            cur += diff[i];
            res[i] = cur;
        }
        return res;
    }
}