自学内容网 自学内容网

差分数组介绍

差分数组介绍

定义

对于已知有n个元素的离线数列d,我们可以建立记录它每项与前一项差值的差分数组f
f [ i ] = { d [ 1 ] if  i = 1 , d [ i ] − d [ i − 1 ] if  i > 1. f[i] = \begin{cases} d[1] & \text{if } i = 1, \\ d[i] - d[i-1] & \text{if } i \gt 1. \end{cases} f[i]={ d[1]d[i]d[i1]if i=1,if i>1.

差分数组

性质

性质1: 计算数列第i项的值

数列第i项的值是可以用差分数组的前i项的和计算的,这是因为差分数组第一项就是原数列的值,后续都是数列的差分变化,有起始数据和后续的变化数据,就可以推导出原始的真实数据。推导公式如下:
d [ i ] = ∑ j = 1 i f [ j ] d[i] = \sum \limits _{j = 1}^i f[j] d[i]=j=1if[j]
由于d[i-1]已经计算出差分数组前i-1项的和,所以进一步优化为
d [ i ] = { f [ 1 ] if  i = 1 , f [ i ] + d [ i − 1 ] if  i > 1. d[i] = \begin{cases} f[1] & \text{if } i = 1, \\ f[i] + d[i-1] & \text{if } i \gt 1. \end{cases} d[i]={ f[1]f[i]+d[i1]if i=1,if i>1.
基于差分数组恢复原数组


原文地址:https://blog.csdn.net/Yuzhiyuxia/article/details/142439551

免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!