前缀和的精华就是需要一个额外的字典的帮助,不同的题中字典的key以及key对应的value所有不同:
关于字典dicts的初始化问题:
尤其需要说明,前缀和一般适用于求和的情况,对于求乘积的情况要非常小心, 因为乘积的相乘后的符号会发生改变,例如:
152. 乘积最大子数组(采用动态规划)
我从简单到困难梳理一下
类型1:一维数组情况下
(1)最基本的题,适合前缀和的入门:
525. 连续数组(本题是在930的基础上,变为求长度,对应于前面所述的情况2)
(2)进阶版
k
的倍数,问是否存在,返回True or False,可以看到与974基本上一样,属于经典的情况3了。但是与974不同的是,对子数组的长度做了限制,因此key对应的value就不是个数,而是index,用于求是否满足长度大于2)类型2:二维矩阵
1、304. 二维区域和检索 - 矩阵不可变
2、1314. 矩阵区域和
3、1074. 元素和为目标值的子矩阵数量
4、面试题 17.24. 最大子矩阵
5、363. 矩形区域不超过 K 的最大数值和
类型3:二叉树系列