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