差分数组适合解决对数组某一部分值做同样的改变的题。主要分为三步:1. 初始化差分数组 2. 做改变 3. 还原数组
1. 建立
int subNum[];
int nums[];
差分数组大小和原数组大小相同
for(int i = 0; i < nums.size(); i++) {
subNum[i] = nums[i]-nums[i-1];
}
2. 改变,[left, right, value] 从left到right都增加value
subNum[left] += value;
if(right+1 < subNum.size()) {
subNum[right+1] -= value;
}
3. 还原数组
nums[0] = subNum[0];
for(int i = 1; i < nums.size(); i++) {
nums[i] = subNum[i]+nums[i-1];
}