引入问题
给你一个数组nums,再给你一大串任意多的区间[i,j]和数字n,叫你对nums数组的区间[i,j],做+n操作,要你最后给出nums数组的值
思路:
对于每一个区间[i,j],使用一个循环,从num[i]开始,到nums[j],每个数字都+n,这样做看上去似乎行得通,但是一旦数组元素的数量非常大,区间[i,j]的跨度非常大,区间的数量非常多,非常容易导致时间超限,那我们如何来进行优化呢?
何为差分数组
差分数组被用来快速对数组某一段区间进行增加或减少操作
假设原nums数组的值为{5,7,6,3,8},计算出差分数组differen,其中differen[i] = nums[i]-nums[i-1],特殊情况differen[0] = nums[0]
如何由差分数组还原到原数组呢?num[i] = num[i-1] + differen[i],特殊情况:nums[0] = differen[0]