算法中的二阶差分

众所周知,在往区间的每一个数都加上一个相同的数k,进行n次后会得到一个新的数列,如果每次加都循环区间挨个数加上k,这样时间复杂度无疑是O(n^2),很高。这时可以采用一阶差分就可解决,这里默认会一阶差分,所以就不多说了嘿嘿。

那如果是加上不同的数呢,比如说往区间[l,r]的l点加上数a,往l+1点加上数a+d,……。加的数形成等差数列,这该怎么办呢?这时可以用二阶差分。因为你想,对加上对应等差数列的不同的数进行一阶差分,是不是点的值都变成公差了,公差是不是都是一样的,那这时候再进行一次差分,就可以做到只改变区间某点的数据,实现区间的加减值。

如下图:

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值