前缀和
前缀和
baixiaofei567
如果十年前没种树,那最好的时间是现在
展开
-
525. 连续数组
前缀和周不用说了!还以为是dp嘞,看来连续子数组不仅要考虑dp还要考虑prefixsum我们把0看成-1,那么就变成了求一段和为0的最长解,所以我们用前缀和+哈希来做。前缀和是防止重复求和,哈希是为了快速查找相同是否有相同前缀和的情况,如果有,中间差的那一段一定是0!每一轮循环先更新前两位的,不能更新前一位的哦,不然要是和sum[i]相同,那么这一段连续子数组和可能是只有1个的,虽然不可能发生,但是还是要注意。直接判断前两位是否已存在,如果不存在就更新一下前两位的前缀和,因为要保证连续子数组长度&g.原创 2021-06-03 23:53:36 · 125 阅读 · 0 评论 -
523. 连续的子数组和
sum 是前 i+1 项和,每次加入集合的是前 i 项和的模。 当两个前缀和关于模 k 同余时,它们的差值就是满足条件的子数组和因为这两个前缀和%k的值一样,所以它们之间的差值一定是k的整数倍!为什么我们在每一轮加入的是sum-nums[i]对k的余数呢?因为这样在下一轮对sum+nums[i]进行判断的时候,差的就是两个,满足最小数量>=2的标准class Solution {public: bool checkSubarraySum(vector<int>& n.原创 2021-06-03 00:17:12 · 100 阅读 · 0 评论 -
1744. 你能在你最喜欢的那天吃到你最喜欢的糖果吗?
题解都在注释里,总的来说这是一道前缀和的题,在一个数组从i-j被重复计算的时候就要考虑用空间换时间,也就是前缀和。class Solution {public: vector<bool> canEat(vector<int>& candiesCount, vector<vector<int>>& queries) { //queries里每一个一维都是从第0天开始判断的,但是要把queries[i][0]前的糖果..原创 2021-06-02 00:25:08 · 88 阅读 · 0 评论