在数值计算中,常用差分近似微分.
最简单的差分格式有向前、向后和中心3种.
向前差分:f'(n)=f(n+1)-f(n)
向后差分:f'(n)=f(n)-f(n-1)
中心差分:f'(n)=[f(n+1)-f(n-1)]/2
diff差分数组,diff[i]就是nums[i]和nums[i-1]之差:
通过这个diff差分数组是可以反推出原始数组nums的:
这样构造差分数组diff,就可以快速进行区间增减的操作,如果你想对区间nums[i..j]的元素全部加 3,那么只需要让diff[i] += 3,然后再让diff[j+1] -= 3即可.
原理:
原理很简单,回想diff数组反推nums数组的过程,diff[i] += 3意味着给nums[i..]所有的元素都加了 3,然后diff[j+1] -= 3又意味着对于nums[j+1..]所有元素再减 3,综合起来,就是对nums[i..j]中的所有元素都加 3 了。
差分算法工具化