![](https://img-blog.csdnimg.cn/20201014180756754.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
leetcode刷题总结
TheJustice_
这个作者很懒,什么都没留下…
展开
-
2024.7.19 刷题总结
543.二叉树的直径,这道题是一道考察递归的题目,按照树的一般算法,维护一个最大直径答案值,定义一个递归函数,开头是递归返回条件,即当前节点为空节点就返回0,否则分别往左和往右递归,维护每个节点的最大深度为左右最大深度中的最大值再加一,答案用左右节点的最大深度的和再加一来维护.124.二叉树中的最大路径和,这是一道考察递归的题目,从根节点出发,类似于dfs,分别递归寻找左右节点的路径和,直到叶子节点再返回,从叶子节点往上更新以每个节点为根节点的最大路径,直到返回根节点,用一个变量来维护答案.原创 2024-07-19 22:36:19 · 315 阅读 · 0 评论 -
2024.7.16 刷题总结
2956.找到两个数组公共的公共元素,这道题是一个哈希表的简单题目,根据题意,我们需要统计的是每个数组在另外一个数组中也存在的元素个数,所以我们建立两个哈希表,分别统计两个数组中出现的元素的情况,数据范围很小,这里选用数组模拟哈希表或者用STL的哈希表都可以完成,统计完之后再分别遍历两个数组找出答案即可。原创 2024-07-16 15:55:34 · 267 阅读 · 0 评论 -
2024.7.15 刷题总结
对于一个节点,只要左节点往下走或者右节点往下走有一条路是成功的,那么就返回true,所以递归的思路就明确了,还需要再写出结束条件,如果节点为空,那么就返回false,如果节点左右节点均为空,则需要判断当前节点值和剩下的目标值是否相等,递归的时候我们就是用当前root的左右节点两种情况来判断,而且目标值每次需要减去当前节点的值,这个是关键。可以考虑迭代的思想,用一个队列来存储需要判断的节点,刚开始存储的是根节点的左右节点,每次从队列中取出两个节点,然后先判断特殊情况,空指针和值不相等的问题。原创 2024-07-15 12:12:31 · 131 阅读 · 0 评论 -
2024.7.14 刷题总结
807.保持城市天际线,这是一道简单的矩阵和数学问题,题目的意思是增加那些高度较小的建筑,不影响四面的视图,所以我们很快就能明白限制的因素是该建筑所在行和所在列的最大值,取它们两者之间的更小值减去原始高度即为所求。刚开始看到这道题时,还以为需要预处理出四个面的结果,但是仔细一想发现,左右和上下的视图是相同的,所以只需要处理两个面的结果就可以,即每行和每列的最大值。226.翻转二叉树,这道题是一道典型的递归题目,我们需要先翻转叶子节点,然后再整体把整个左右子树调换,所以需要从最下层开始翻转,符合递归的条件。原创 2024-07-14 13:51:33 · 166 阅读 · 0 评论 -
2024.7.13 刷题总结
94.二叉树的中序遍历,这道题是一个简单的栈辅助遍历的题目,我们首先需要初始化一个答案数组和栈来辅助。然后根据中序遍历的意思,只要当前节点不为空或者栈不为空,就说明还有节点未遍历,我们就一直将root节点移动到它的左节点,直到变为空指针,这时候我们就可以将栈顶弹出,将该值加入答案数组,然后访问右节点,这样就实现了永远优先访问左节点,直到为空指针再访问中节点,再访问右节点,而当出现右节点也为空指针时,就会继续弹出栈顶的节点,继续向上遍历。栈里面只存放了所有左节点,而右节点需要手动遍历。原创 2024-07-13 12:32:08 · 274 阅读 · 0 评论 -
2024.7.12 刷题总结
457.环形数组是否存在循环,这道题是一个考察快慢指针的题目,将数组中的n个点看作图中的n个节点,再将i+nums[i]看作每个节点延伸出去的单向边,所以现在题目变成判断有无环路的题目,这时我们就可以遍历数组,初始化快慢指针,快指针在慢指针前面一步,然后每次快指针走两步,慢指针走一步,直到他们相遇。还需要标记一个已经走的步数,最后判断答案时,步数需要大于1才是有效的答案,并且在走的过程中,需要设置步数大于一定值自动退出,否则会出现runtime error.然后我们再遍历数组加上答案即可。原创 2024-07-12 10:35:23 · 351 阅读 · 0 评论 -
2024.7.11 刷题总结
206.反转链表,本题考察的是链表的基本性质,在反转操作时,我们可以看作是将当前节点的后继节点改为前驱节点,遍历一次即可完成。这个操作就相当于先确定最后一个节点,然后依次往前确定节点。然后从最后一个元素开始遍历,直到出现非下降元素就终止,每遍历一个元素,就找出最大的前缀满足连接处的大小关系,然后再叠加答案。160.相交链表,这道题用的是哈希表来存储链表的节点,我们先遍历A链表,将所有节点加入哈希表中,然后再遍历链表B,如果在哈希表中找到了对应值,那么就返回该值,否则返回空指针。原创 2024-07-11 18:56:16 · 606 阅读 · 0 评论 -
2024.7.10 刷题总结
题目的意思是要统计有多少个子数组能满足移除后剩下的元素为严格递增的关系,刚开始没考虑到移除的元素要是连续的,所以出错了。首先,我们可以先统计一下数组的最大前缀, 如果整个数组都是递增的,那么我们就不用再算其他情况了;对于这种两边都需要枚举讨论的题目,我们可以只枚举一边,然后判断另外一边的数值,所以我们选择枚举后缀,只要后缀满足往前递减的关系,我们就进行计算,我们先让最大递增前缀往回,直到连接处满足关系,然后此时答案就是最大前缀的下标加2,剩下的任务就是模仿这个过程完成循环,直到后缀不满足情况就结束。原创 2024-07-11 18:05:55 · 1093 阅读 · 0 评论 -
2024.7.6 刷题总结
如果没有,就放入,判断是否满足条件,如果不满足,再依次把六种可能的情况放入,分别是把 X 壶灌满,把 Y 壶灌满,把 X 壶倒空,把 Y 壶倒空,把 X 壶的水灌进 Y 壶,直至灌满或倒空,把 Y 壶的水灌进 X 壶,直至灌满或倒空。经过数学分析发现,只需要枚举数组的右端点,维护一个当前子数组值的变量,当前数和前一个数不一样时,我们就令子数组的元素个数+1,如果相同,我们就令变量重新为1,然后每次循环结束都把当前的值加到答案中,保证能计算到每个右端点代表的子数组的值。原创 2024-07-06 14:55:04 · 142 阅读 · 0 评论 -
2024.7.5 刷题总结
202.快乐数,这道题直接看就是通过判断一个数通过规则变换能不能最终回到1或者是进入无限循环,如果我们根据路线就可以得出是判断有没有环的题目,所以我们可以使用快慢指针的方法,若循环,即出现环时,快指针会追上慢指针。3033.修改矩阵,本题为简单模拟题,题意是找到每列的最大值,然后把值为-1的更换即可,所以我们需要遍历两次数组,第一次把不是-1的点写入并且维护列的最大值,第二次把-1的点用列最大值更换即可。原创 2024-07-05 14:17:54 · 160 阅读 · 0 评论 -
2024.7.4 刷题总结
3086.拾起k个1需要的最少行动次数,在这道题我们可以把0看成空位,第二种操作相当于把一个1移动到和它相邻的空位上,而第一种操作则是贪心地把和当前下标相邻的0变成1;maxchanges较小的情况是,几所所有长为k-maxchanges的子数组的货仓选址问题,再取最小值。通过设置一个当前遍历的元素个数和需要遍历的数组来维护dfs函数,维护一个当前的集合和答案集合,当个数达到原数组大小时返回,遍历时包含两种情况,分别是考虑当前元素和不考虑当前元素,每次都先达到了最大元素个数,再依次返回。原创 2024-07-04 17:53:48 · 170 阅读 · 0 评论 -
2024.7.3 刷题总结
31.下一个排列,本道题考察的是双指针,题目的意思是找到下一个字典序更大的排列,所以我们的任务是把一个数组右边的一个较大数与数组左边的一个较小数交换,并且它们的距离应当尽量近,所以算法的步骤就是首先从后往前查找第一个顺序对,不满足降序的关系,标记为i.然后在i+1到n从后往前查找第一个下标j满足后数大于前数,然后交换两个数,并且将i+1到n之间的序列反转.3099.哈沙德数,简单数学题,我们的目的是计算出每一位数的和,所以我们每次取数模10的结果,然后令其除10,最后判断是否能整除即可。原创 2024-07-03 16:29:56 · 256 阅读 · 0 评论 -
2024.7.2 刷题总结
3115.质数的最大距离,本道题是一个简单的模拟题,题意是找到数组中第一个质数和最后一个质数,可以通过写一个质数筛来预处理标记质数再输出即可;由于本题的数据范围较小,所以我们只需要用最简单的指数判断方法即可,每个数都遍历到它的根号范围,然后分别通过正向和反向遍历找到第一个和最后一个质数,输出他们的下标差即可。1441.用栈操作构建数组,本题是一个简单模拟题,遍历n,当我们的目标数字在target中就只用Push,否则需要先Push再Pop,维护一个prev记录上一次操作时栈顶的索引值。原创 2024-07-02 14:13:21 · 384 阅读 · 0 评论 -
2024.7.1 刷题总结
本题还可以利用Djikstra最短路算法进行剪枝,提前处理好起点到每个节点的最短路,同时也是每个节点到起点的最短路,在递归到下一个节点之前,判断下一个节点在走最短路的前提下,能否在maxTime时间内回到起点0,若不能,则不递归。获取随机元素的函数:rand()11.盛最多水的容器,本题是一个双指针的题目,依据题意得,水量等于两边高度更小的一边乘上下标之差,所以我们只需要利用双指针遍历一次数组即可得出最终答案,每次更新当前最大值,并且令两端更小的向中间靠拢,本质上是一个贪心的思想。原创 2024-07-01 21:13:57 · 208 阅读 · 0 评论 -
2024.6.30 刷题总结
现在问题就转变为通过从数组中选取若干元素作为添加负号的元素,他们的和要与全部元素的和减去目标值再除以2相等,所以就转换为动态规划问题,dp[i][j]表示从前i个数种选取元素使得与j相等的方案数,最终答案为dp[n][(sum-target)/2];100340.三角形的最大高度,本题是一个简单模拟题,根据题意,一共有两种情况,分别是蓝球和红球在第一层的情况,所以我们只需要分别执行这两种情况来计算高度,答案是这两种情况下的更大的一方,通过判断层数的奇偶性来判断即可。原创 2024-06-30 12:36:15 · 285 阅读 · 0 评论 -
2024.6.29 刷题总结
2710.移除字符串中的尾随零,本题是一个简单模拟题,考察一些字符串的基本操作,最直接的思想就是从后往前遍历,标记第一个不为0的下标,然后取这个下标之前的数即可。substr的作用是只保留范围内的字符,find_last_not_of的作用是找到最后一个不为0的位置,也可以手写循环代替。原创 2024-06-30 00:13:46 · 222 阅读 · 0 评论 -
2024.6.28 刷题总结
2742.给墙壁刷油漆,根据题意,可以得出几个结论,首先是付费刷墙的总时间要大于等于免费刷墙的个数,其次是付费刷墙个数与免费刷墙个数之和为n,结合之后得到付费刷墙时间之和大于等于n-付费刷墙个数,即[付费刷墙时间+1]之和大于等于n,所以我们把这个看作一个01背包的题目,时间+1作为体积,花费作为价值。uint32_t 这个是用来定义一个32位的二进制串。原创 2024-06-28 18:47:51 · 370 阅读 · 0 评论 -
2024.6.27 刷题总结
2734.执行子串操作后的字典序最小的字符串,根据题意,只会出现一次操作,令一个区间内的字符变成自己的前一个字母,所以只有'a'是特例,其他都符合条件,那么我们先判断字符串是否为全a,如果是那么就只用把最后一个a换成z即可;50.Pow(x,n),本题考察的是快速幂算法,利用了递归的思想,计算x的n次方时,可以先计算出y=n/2次方,判断N是奇数还是偶数,如果是偶数就是y*y,奇数则为y*y*x.递归边界为N=0.原创 2024-06-27 11:42:52 · 406 阅读 · 0 评论 -
2024.6.26 刷题总结
526.优美的排列,该题考察的是状压dp的知识,用一个n位的二进制数表示排列中的数被选取的情况,若为1,则表示该位被选取,若为0,则表示该位没有被选取,用一个数组来存储当前情况下的排列数,当前的状态应该由以下所有情况转移而来:枚举当前二进制数中1的位置,若该位置往后一位满足题目的条件,那么就加上这个状态的排列数,遍历所有,最后输出f[(1<<n)-1];2741.特别的排列,这题跟上题有些相似,不过这些数字不是依次增大的,利用递推的方法,不断寻找前一个状态的值,并且累加。原创 2024-06-26 17:20:19 · 161 阅读 · 0 评论 -
2024.6.25 刷题总结
2723.找到矩阵中的好子集,该题考察了一定的数学推导能力,如果答案只有一行,那么必须全0,如果是2-3行,那么每列只能有一个1,如果答案超过四行时,每一行的和最多是k/2,任意两行的AND均不为0,每一行的1的个数的平均值是n/2。20.有效的括号,这题是一个栈的模板题,我们先用map储存相应的括号对应情况,只存后括号,前面的不需要匹配,直接入栈即可,判断的时候需要判断栈顶元素是否和相应的键值匹配。原创 2024-06-25 11:39:34 · 166 阅读 · 0 评论 -
2024.6.24 刷题总结
使用单调栈,单调栈中保存的是下标,该下标数组在原数组对应的值是单调不升的,每次我们移动到数组中的一个新的位置 iii,我们就将当前单调栈中所有对应值小于 nums[i] 的下标弹出单调栈,这些值的下一个更大元素即为 nums[i](证明很简单:如果有更靠前的更大元素,那么这些位置将被提前弹出栈)。但是注意到只遍历一次序列是不够的,例如序列 [2,3,1][2,3,1][2,3,1],最后单调栈中将剩余 [3,1][3,1][3,1],其中元素 [1][1][1] 的下一个更大元素还是不知道的。原创 2024-06-24 22:25:04 · 258 阅读 · 0 评论 -
2024.6.23 刷题总结
520.检测大写字母,本题是简单模拟题,考察了ASCLL码相关的知识,根据题意,本题对于字符串有三种正确的用法,所以我们分三类来讨论,先根据首字母的大小写来分类,如果首字母大写我们计数剩下字母串大写字符的数量,如果为0或者为n-1就成立;100342.最小元素和最大元素的最小平均值,这道题本来想用简单数学的方法来求解,认为最后两个移除的元素肯定是最小值,也就是答案,后面才发现自己的想法出问题了,会有特殊情况,所以必须依次比较。设置头尾双指针,依次计算平均值取最小,计算后两端向中间靠拢,最后输出答案。原创 2024-06-23 11:50:04 · 338 阅读 · 1 评论 -
2024.6.22 刷题总结
560.和为K的子数组,该题中的子数组是连续的,所以可以看做是滑动窗口的模板,在这我们使用的是哈希表+前缀和的思想,两个下标的前缀和数组相减即为他们之间元素的和,我们只需要遍历依次数组,同时检查哈希表中是否有符合条件的键值,若存在,则把对应的值加上,同时更新哈希表的值.原创 2024-06-22 14:28:05 · 330 阅读 · 0 评论 -
2024.6.20 刷题总结
哈希表的方法为,不提前处理出哈希表的值,而是遍历数组的同时,对于每个当前数字的第一个,寻找哈希表中互质的数字是否存在,若存在则把所有答案加上,做完这个操作后再将当前的数字加入哈希表(即哈希表中存的是当前元素之前的元素最后一个数字的相应出现次数,保证了有序性),从这题可以得出一个启示,在一些需要保证顺序的题目里,我们可以在遍历的途中同时更新表值,gcd函数:gcd(x,y)原创 2024-06-20 20:17:07 · 190 阅读 · 0 评论 -
二分查找算法模板
在算法题中,二分查找是一个很基础的能力,但是很多情况下都有可能因为一些小条件导致整题的错误,所以我们需要学习并记忆正确的写法,本篇列出了三种情况下的写法。原创 2024-06-19 11:50:06 · 385 阅读 · 0 评论 -
2024.6.19 刷题总结
2713.矩阵中严格递增的单元格数,这题是一道动态规划问题,因为可以跳转到同一行同一列的任意位置,所以我们不需要记录前一个状态,只需要记录更新到每个位置能得到的最大值即可,同时更新每列和每行的最大值。35.搜索插入位置,本题为二分查找模板题,目的是掌握二分的正确写法。原创 2024-06-19 11:46:20 · 92 阅读 · 0 评论 -
2024.6.18 刷题总结
stringstream 是C++标准库中的一个类,属于 <sstream> 头文件。219.存在重复元素,这道题的本质上是滑动窗口的模板题,我刚开始的想法是遍历数组再同时向前遍历k个元素来判断,此时时间复杂度为N*K,为了降低,应使用set结构。2288.价格减免,这是一道纯字符串的题目,我们的目标是识别出字符串中的价格并将它替换为折扣后的数字。stoll(w.substr(1)):将字符串 w 去掉第一个字符后的剩余部分转换为长长整型(long long)原创 2024-06-18 10:29:17 · 229 阅读 · 0 评论 -
2024.6.17 刷题总结
522.最长特殊序列 Ⅱ,本题为前者的升级版,从两个字符串变成一个字符串序列了,所以我们需要依次枚举字符串来进行判断。455.分发饼干,简单排序+双指针的题目,首先对两个数组进行排序,之后利用双指针分别指向两个数组的起点,若满足条件,则一起前进,若不满足,则S数组的指针前进。389.找不同,本题为哈希表的简单应用,只需要先统计s字符串的哈希表值,再遍历t字符串,当遇到哈希值为的字符就返回.326.3的幂,简单模拟题,不断判断是否为3的倍数将数除3,判断最后是否为1,若不是则输出false.原创 2024-06-17 12:36:08 · 441 阅读 · 0 评论 -
2024.6.16 刷题总结
521.最长特殊序列 Ⅰ,脑筋急转弯,其实这里的特殊序列只要是自己的字串即可,那么我们直接取本身就是最长,如果两个字符串不相等,直接取两者的长度最大值就好,如果相等,就返回-1.100301.构成整天的下标对数目 Ⅱ,上题的数据增强版,这里我们考虑查询和维护即可,遍历数组,当每次加上能满足条件的数组的下标个数,再更新当前的数组值。100304.构成整天的下标对数目 Ⅰ,简单模拟题,遍历数组,若找到两个下标对应的数加起来为24的倍数,那么ans++.原创 2024-06-16 15:44:40 · 279 阅读 · 0 评论 -
2024.6.14 刷题总结
2652.倍数求和,该题一看就是简单模拟题,遍历一次当能整除就加上即可。但是这样时间复杂度太高,所以考虑数字中的容斥原理。只考虑整除一个数时,答案数列是一个等差数列。根据容斥原理,最后答案为三个数的答案,减去两两结合的答案,再加上三个一起的答案。2786.访问数组中的位置使分数最大,看到这题就想到动态规划的思路,遍历数组,每次选择移动该元素时能获得到的最大值,分别考虑最后一个的元素为奇数/偶数的最大值,用长度为2的数组来储存这两个值,每次遍历到一个值就更新。原创 2024-06-14 21:34:50 · 147 阅读 · 0 评论 -
2024.6.13 刷题总结
2813.子序列最大优雅度,本题利用了贪心的思想,首先将items按照profit从大到小进行排序,当子序列为前k个项目时,子序列的利润总和最大,但是总优雅度不一定最大,所以此时我们向后遍历,当下一个元素的类别出现两次以上,取利润最小的项目进行替换即可增加总优雅度,用栈来维护整个序列。2894.分类求和并作差,这个是一个简单模拟题,遍历1到n,刚开始可能想到用两个变量来存,后面发现用一个变量也能完成,不整除的加上,整除的减去即可。原创 2024-06-13 21:12:27 · 257 阅读 · 0 评论 -
2024.6.12 刷题总结
2806.取整购买后的账户余额,这题是个简单模拟题,我们只需要,算出两个数一个是购买金额除10,一个是除10后的余数,再判断余数的大小,如果大于等于5就需要购买(n+1)*10,否则购买n*10.242.本题为简单哈希表题目,先判断两字符串的长度是否相同,若不同,则直接返回false,如果相同,我们先统计s的字符哈希表,再遍历t字符串,如果不够用了,则返回false,否则返回true.70.爬楼梯,递归模板,动态规划模板,初始化第一和第二的答案,后续的答案为前两个相加即可。原创 2024-06-12 15:46:06 · 210 阅读 · 0 评论 -
2024.6.11 刷题总结
15.三数之和,这一题我的方法是利用三种循环实现,但是最后会超时,于是我增加了一些剪枝操作,当一些情况下提前退出循环,但是始终无法通过,于是我发现了自己对于双指针的理解还没有很彻底。我认为我的代码实现了双指针,双循环枚举起点和终点,用while不断将mid向前,但是分析一下逻辑,这实际上还是三重循环,并没有真正实现双指针,所以这告诉我们,实现双指针不是用特定的代码结构就可以,而是真正的代码逻辑层面实现。419.甲板上的战舰,一看题目,就感觉是用dfs来求解,但是再想想更简易的方法。原创 2024-06-11 17:37:56 · 431 阅读 · 0 评论 -
2024.6.10 刷题总结
利用二分查找的方法时,我们只需要遍历一次数组,定义一个low,一个high指针,分别判断每次和的结果,如果等于目标则直接输出,若大于,则high=mid-1,若小于,则low=mid+1,可以快速完成数组的查找,最后如果都没有找到就返回-1。881.救生艇,依据题意可以看出这道题是一道贪心的题目,即越多地安排两个人坐一艘船更好,所以我们想到每次都用最小和最大的组合,判断是否能够合并,故需要先进行排序,然后利用双指针的特性,如果前后两个可满足,那么就共同向中间靠近,如果不满足,就后面的往前一个单位。原创 2024-06-10 14:10:13 · 252 阅读 · 0 评论 -
2024.6.9 刷题总结
312.戳气球,根据题目的意思,我们需要依次戳破区间内的所有气球,得出最后的答案,那么我们可以看出本题的思想为动态规划的状态转移,枚举每个可能作为最后一个戳破的气球k,ij为区间的两个端点,每次区间的长度从3开始往后枚举,模拟从戳破最后一个气球开始往回倒推的过程。100325,找出K秒后拿着球的孩子,本题为简单模拟,我们只需要遍历时间,每次更新当前拿着球的孩子即可,但是传球的方向会改变,所以我们需要定义一个方向变量,当回到第一个时方向为1,到达最后一个时方向为-1.原创 2024-06-09 13:47:37 · 237 阅读 · 0 评论 -
2024.6.8
在本题中我们使用DP思想,从尾部开始遍历字符串,对于每个字符再遍历它之后的元素,一共有三种状态,当i==j时,令数组为1;当s[i]==s[j]时,我们还要分情况讨论,如果i==j-1,此时直接令数组为2,因为下一个状态i>j;3040.相同分数的最大操作数目 Ⅱ,通多题意可知,该题最多有三种操作分数,分别是前两个,最后两个,以及第一个和最后一个的和。依次判断三个状态,当前区间的前面两个,最后两个,以及第一个和最后一个,直到遍历区间长度为1就可以求出整个区间的答案。原创 2024-06-08 14:12:04 · 500 阅读 · 0 评论 -
2024.6.7 刷题总结
135.分发糖果,从题目出发,刚开始理解为找到数组中最大的值,依次往两边递减,但是不好实现,所以作罢;但是该方法时间复杂度过高,我们需要进行优化,我们可以进行数学推导,若从i出发,到达j时不满足条件,不能继续前进,那么从i-j之间任何一个加油站出发都无法满足条件,所以我们直接从j+1个开始向前判断,降低了时间复杂度。3038.相同分数的最大操作数目 Ⅰ,该题为简单模拟题,先计算出前两个元素的和,依次往后遍历两个元素,若它们和与之前的相同,则答案++,若不同则直接跳出,结束。原创 2024-06-07 20:58:18 · 273 阅读 · 0 评论 -
2024.6.6 刷题总结
2938.区分黑球和白球,刚开始没认真审题,没发现只能交换相邻的球,所以写了一个头尾的双指针,导致了错误,但是还是有两个收获,第一个是利用while写头尾双指针的题目时,一定要加上边界判断,及时跳出循环,否则会一直超时;弄清楚题意之后,可以利用贪心的思想,我们发现从左遍历字符串,每次遇到一个0,就要把它移动到左边,移动的次数为它左边1的个数,因为1肯定要越过最右边的0,所以我们只需要维护一个当前状态下遇到1的个数,再维护一个当前移动的次数,每次遇到1时,sum++,遇到0时,ans+=sum.原创 2024-06-06 11:50:30 · 134 阅读 · 0 评论 -
2024.6.5 刷题总结
383.赎金信,利用哈希表的思想,先构建一个字符计数数组,负责统计ransomNote中字符出现的次数,然后再遍历magazine数字,如果每个字符对应的计数数组都够用,那么证明可以完成。392.判断子序列,利用双指针的思想,遍历主字符串,当遇到相等的字母,目标字符串下标+1.判断最后的下标,若刚好为字符串的长度,即为正确。原创 2024-06-05 17:59:05 · 243 阅读 · 0 评论 -
2024.6.4 刷题总结
3070.元素和小于等于k的子矩阵的数目,根据题意,很明显想到前缀和的知识,这里其实是二位前缀和的模板,算出所有前缀和并判断条件即可。3069.将元素分配到两个数组中 Ⅰ,按照题意模拟即可,新建两个数组,依次判断加入,最后合并最终答案数组即可。原创 2024-06-04 21:08:13 · 252 阅读 · 0 评论