基础算法 --- 前缀和与差分

前缀和

一个数列A,它的前缀和数列S是能够通过数学方式推断出来的:

部分和

数列A中某个下标区间内和数的和,即:

S[i, j]=S[j] - S[i - 1]

前缀和与部分和应用场景

给定m个区间,求每个区间内数的和;

暴力解法:m次循环,循环内部再进行区间循环,这种解法在小量数据场景无问题,如果数值大,会造成超时。

前缀和解法:先计算前缀和,然后循环m次,求每个区间部分和

差分

一个数列A:1、2、3、4、5,它的差分数列为B:1、1、1、1、1,那么有如下特性:

1、数列B的前缀和S[i]=A[i]

2、数列A的第i项加k相当于数列B的第i项加k,第i+1项减k

3、数列A的第i到j项加k,相当于数列B的第i项加k,第j+1项减k

力扣对应习题

https://leetcode-cn.com/problems/corporate-flight-bookings/

https://leetcode-cn.com/problems/subarray-sum-equals-k/

猜你喜欢

转载自www.cnblogs.com/sniffs/p/12121916.html
今日推荐