差分数组
概念
所谓差分数组就是对数组的相邻元素求差保存到一个新的数组中,这个数组就是差分数组。 如下所示:
序号01234原数组a15343差分数组d14-21-1 作用用于频繁的区间修改 区间修改是对数组的一段区间同时加上或减去某一个数 对上面的数组我们执行如下操作: 1.对区间[0,3]中的每个元素加3 2.对区间[1,2]中的每个元素减2 我们不难想到可以通过遍历区间中的每个元素来实现,但是如果区间很大,执行的操作很多时,这种方法很容易超时。这时就需要用到差分数组。
我们观察当我们对区间[0,3]中的每个元素进行加3操作时,差分数组只有d[0]和d[4]会发生变化。
序号01234原数组a48673差分数组d44-21-4同理,对区间[1,2]执行减2操作时,只有d[1]和d[3]会发生变化。
序号01234原数组a46473差分数组d42-23-4这就是差分数组所有的性质:当对区间[i,j]进行加减操作时,差分数组d[i]进行相同的操作,d[j+1]进行相反的操作。 利用差分数组的这个性质,我们对数组任意长度的区间修改不再需要遍历每个元素而只需要修改差分数组两个元素的值即可。 当进行完所有的区间操作后,对差分数组求一个前缀和即可得到原数组。 因为d[i]=a[i]-a[i-1],所以a[i]=a[i-1]+d[i],并且有a[0]=d[0],我们可以从前往后依次求出a[i]。
例题LeetCode1109
参考代码
class Solution
{
public:
vector corpFlightBookings(vector &bookings, int n)
{
vector d(n, 0);
for (int i = 0; i
关注
打赏
最近更新
- 深拷贝和浅拷贝的区别(重点)
- 【Vue】走进Vue框架世界
- 【云服务器】项目部署—搭建网站—vue电商后台管理系统
- 【React介绍】 一文带你深入React
- 【React】React组件实例的三大属性之state,props,refs(你学废了吗)
- 【脚手架VueCLI】从零开始,创建一个VUE项目
- 【React】深入理解React组件生命周期----图文详解(含代码)
- 【React】DOM的Diffing算法是什么?以及DOM中key的作用----经典面试题
- 【React】1_使用React脚手架创建项目步骤--------详解(含项目结构说明)
- 【React】2_如何使用react脚手架写一个简单的页面?