两类前缀和问题
前缀和
下面给出两个例子。
- 第一个是给定 target,计算和为 target 的子数组的数目;
- 第二个是给定 target,计算和为 target 的子数组的最短的长度。
解题的核心思想都是一致的:
- 使用 Map 记录出现过的 prefix_sum 的数目/最近下标。
- 处理特殊值,即将 0 放入 Map 中。
- 进入循环:
- 查找 Map 中是否存在 prefix_sum - target 的值,更新 res。
- 把本轮循环的 prefix_sum 放入 Map 中。
- 退出循环,返回 res。
560. 和为 K 的子数组
1 | class Solution { |
1590. 使数组和能被 P 整除
1 | class Solution { |
二维前缀和
在求二维前缀和的时候,仅需注意两个点:
- presums 比 matrix 的长宽都大 1。
- 在计算子矩阵和的时候,rowbig 和 colbig 都要记得加 1。
1 | class NumMatrix { |
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 LuoRongLuoRong!
评论