算法中的二阶差分
·
众所周知,在往区间的每一个数都加上一个相同的数k,进行n次后会得到一个新的数列,如果每次加都循环区间挨个数加上k,这样时间复杂度无疑是O(n^2),很高。这时可以采用一阶差分就可解决,这里默认会一阶差分,所以就不多说了嘿嘿。
那如果是加上不同的数呢,比如说往区间[l,r]的l点加上数a,往l+1点加上数a+d,……。加的数形成等差数列,这该怎么办呢?这时可以用二阶差分。因为你想,对加上对应等差数列的不同的数进行一阶差分,是不是点的值都变成公差了,公差是不是都是一样的,那这时候再进行一次差分,就可以做到只改变区间某点的数据,实现区间的加减值。
如下图:

魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。
更多推荐


所有评论(0)