前缀和
前缀和
algsup
这个作者很懒,什么都没留下…
展开
-
[前缀和]leetcode1915:最美子字符串的数目(medium)
代码】[前缀和]leetcode1915最美子字符串的数目(medium)原创 2022-07-27 16:18:20 · 249 阅读 · 0 评论 -
[前缀和]leetcode238:除自身以外数组的乘积(medium)
题目:题解:代码如下:原创 2022-07-08 11:35:15 · 102 阅读 · 0 评论 -
[前缀和]leetcode2245:转角路径的乘积中最多能有几个尾随零(medium)
题目:题解:思路:一维前缀和+枚举代码如下:class Solution {public: // 乘积尾随0的数量是所有乘数中因子2数量之和与因子5数量之和中的较小值 // 在做乘积的过程中,尾随0的数量只会增加不会减少,因此我们应该让尽量多的数参与乘积运算,这就说最有路径一定是从某个边界出发拐个弯在走到另外一个边界 int maxTrailingZeros(vector<vector<int>>& grid) {原创 2022-05-24 19:10:33 · 108 阅读 · 0 评论 -
[前缀和]leetcode525:连续数组(medium)
题目:题解:思路:前缀和+hashmap这里的前缀和即为1的数量与0的数量之间的差值,遇到1,pre++(差值+1),遇到0,pre–(差值-1)前缀和用hashmap来存储,hashmap存储重复前缀和(差值)的最小下标,不过要清楚两个问题:1)为什么前缀和相同的两个位置,它们之间0和1的数量为何相等?答:下标:0...j,j+1...i...,若位置j与位置i的前缀和相等,即两个位置的1和0的数量的差值都相等(现假设为 k ),左边位置j(包括j)前面有m个0,有m+k个1;右边位置原创 2022-01-05 21:57:29 · 164 阅读 · 0 评论 -
[前缀和]leetcode560:和为 K 的子数组(medium)
题目:题解:思路1:双重for暴力法,考虑以 下标i 结尾的连续子数组和为k的个数,我们需要统计符合条件的下标 j的个数,其中 0≤j≤i 且 [j..i] 这个子数组的和恰好为k。思路2:前缀和+hashmap,hashmap用来建立 前缀和与相同前缀和的个数,hashmap 的使用方式类比《两数之和》,先查询再插入。代码如下:class Solution {public: // 思路1:枚举区间[0,i]之间的下标j是否满足情况,当0<=j<=i时原创 2022-01-05 19:20:22 · 365 阅读 · 0 评论 -
[前缀和]leetcode5667:你能在你最喜欢的那天吃到你最喜欢的糖果吗?(medium)
题目:题解:这道题是不难,md就是题目真tm难懂,我比赛时看到这么长的题目直接放弃了,求求能不能把题目写的简单好懂些。思路:先前缀和预处理,然后判断我们能吃到糖果的区间[d+1,c*(d+1)],和我们想吃到糖果数的区间[s[t]+1,s[t+1]],二者是否存在交集。这里解释一下[s[t]+1,s[t+1]],由于种类 t 是从下标 0 开始的,而前缀和数组 s 是从下标 1 开始的,所以我们可以吃到种类 t 的糖果可以吃的最多糖果书为 s[t+1],吃的种类 t 的最少糖果数为 s[原创 2021-01-31 23:47:33 · 162 阅读 · 0 评论 -
[前缀和]leetcode5304:子数组异或查询(medium)
题目:https://leetcode-cn.com/problems/xor-queries-of-a-subarray/题解:前缀和模板题,记住异或运算:0^x=x、x^x=0至于为什么前缀和要比原数组多一个的原因:假设要求data[0…i],那么就需要pre[i] - pre[-1]。我们就多一个0,变成pre[i+1]-pre[0];所以[0,i]的异或值为等于pre[i+...原创 2020-01-06 00:00:40 · 232 阅读 · 0 评论 -
[一维前缀和]leetcode303:区域和检索 - 数组不可变(easy)
题目:题解:一维前缀和,元素数组[0,j]的前缀和对应prefix[j+1]代码如下:class NumArray {private: vector<int> prefix;public: //题解:一维前缀和 NumArray(vector<int>& nums) { int n=nums.size()...原创 2019-12-16 15:47:43 · 401 阅读 · 0 评论 -
[前缀和子矩阵模板]leetcode304:二维区域和检索 - 矩阵不可变(medium)
题目:304. 二维区域和检索 - 矩阵不可变题解:前缀和子矩阵模板题,直接套板子就好了。代码如下:class NumMatrix {private: vector<vector<int>> prefix;public: //题解:前缀和子矩阵模板题 NumMatrix(vector<vector<int>...原创 2019-12-16 15:26:10 · 388 阅读 · 0 评论 -
C++:前缀和子矩阵的模板
前缀和子矩阵模板:解释:矩阵a的第一行第一列全部铺0,是用来更好的帮助建立前缀和子矩阵s的。前缀和子矩阵s的建立:s[i][j] = s[i-1][j] + s[i][j-1] -s[i-1][j-1] + a[i][j];。解释:以点[i,j]作为作为最右下角的最大矩阵的前缀和需要加上点[i-1,j]和点[i,j-1]的前缀和,然而会重复多加一个点[i-1][j-1]的前缀和,所以要减一...原创 2019-12-15 17:53:23 · 574 阅读 · 0 评论 -
[前缀和矩阵]leetcode5285:元素和小于等于阈值的正方形的最大边长(medium)
题目:5285. 元素和小于等于阈值的正方形的最大边长题解:前缀和子矩阵大佬说用前缀和子矩阵+二分,我本人菜鸡才搞懂前缀和子矩阵,所以直接将前缀和子矩阵了。建立前缀和子矩阵需要使用两个矩阵,第一个矩阵用来给原矩阵的最左边和最上边加一排0,第二个矩阵是用来建立前缀和子矩阵的。重点理解①:生成前缀和子矩阵的s[i][j] = s[i - 1][j] + s[i][j - 1] - ...原创 2019-12-15 17:44:42 · 213 阅读 · 0 评论