目录
- 1. 前缀和: 是一种对暴力求解的优化.
- 2. 前缀和? 如何利用前面的计算结果提高效率?
- 3. 如何预处理前缀和数组(如何让处理前缀和数组的复杂度是O(N))?
接下来, 我们开启一个新的专题 -> 前缀和, 第一道是模板题, 一维前缀和
1. 前缀和: 是一种对暴力求解的优化.
前缀和这个算法非常easy, 不过碰到的题easy不easy就不一定了~
然后这个算法的一个本质就是通过利用前面的计算结果来提高效率, 说白了就是空间换时间的一种典型.
2. 前缀和? 如何利用前面的计算结果提高效率?
看下面图片, 我们如何在O(1)时间复杂度内求得一个子数组的和呢? 可以预处理前缀和数组来解决!
我们知道, 访问一个数组元素的时间复杂度是O(1).
我提前弄出一个前缀和数组来, 该数组的每一个元素代表nums数组[0, i]所有元素的和.
那么上面问题就可以转换为: sum[left, right] = sum[0, right] - sum[0, left]. 而运算这个表达式, 时间复杂度是O(1).