一、 前缀和
模板
const L = nums.length;
const preArr = new Array(L + 1).fill(0);
for (let i = 1; i < preArr.length; i++) {
preArr[i] = preArr[i - 1] + nums[i - 1];
}
题目
- 915. 分割数组 ---> 题解
- 1248. 统计「优美子数组」 ---> 题解
- 53. 最大子数组和 ---> 题解
- 304. 二维区域和检索 - 矩阵不可变 ---> 题解
- 剑指 Offer 66. 构建乘积数组
- 525. 连续数组
- 325. 和等于 k 的最长子数组长度
二、差分
模板
const arr = new Array(length).fill(0);
区间 [start, end] 闭区间,所有内容都加 add
arr[start] += add
arr[end + 1] -= add;
求前缀和
题目
- 370. 区间加法 ---> 题解
- 1109. 航班预订统计 ---> 题解
三、 双指针
题目
- 167. 两数之和 II - 输入有序数组 ---> 题解
- 15. 三数之和 ---> 题解
- 11. 盛最多水的容器 ---> 题解