差分算法是什么?

钱钟书的女儿2023-01-30  18

在数值计算中,常用差分近似微分.

最简单的差分格式有向前、向后和中心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 了。

差分算法工具化


转载请注明原文地址:https://juke.outofmemory.cn/read/2832424.html

最新回复(0)