算法挨揍日记
文章平均质量分 85
学IT的小卢
擅长写bug,摆烂,白日梦。
展开
-
【算法小课堂】动态规划
动态规划相信大家都知道,动态规划算法也是新手在刚接触算法设计时很苦恼的问题,有时候觉得难以理解,但是真正理解之后,就会觉得动态规划其实并没有想象中那么难。网上也有很多关于讲解动态规划的文章,大多都是叙述概念,讲解原理,让人觉得晦涩难懂,即使一时间看懂了,发现当自己做题的时候又会觉得无所适从。我觉得,理解算法最重要的还是在于练习,只有通过自己练习,才可以更快地提升。话不多说,接下来,下面我就通过一个例子来一步一步讲解动态规划是怎样使用的,只有知道怎样使用,才能更好地理解,而不是一味地对概念和原理进行反复琢磨。原创 2024-01-09 12:02:22 · 1700 阅读 · 8 评论 -
【算法挨揍日记】day46——377. 组合总和 Ⅳ\、96. 不同的二叉搜索树
⼀定要注意,我们的背包问题本质上求的是「组合」数问题,⽽这⼀道题求的是「排列数」问题。这道题属于「卡特兰数」的⼀个应⽤,同样能解决的问题还有「合法的进出栈序列」、「括号匹配。,我们根据「最后⼀个位置」划分,我们可以选择数组中的任意⼀个数。的个数的时候,当确定⼀个根节点之后,左右⼦树的结点「个数」的时候,表⽰⼀颗空树,「空树也是⼀颗⼆叉搜索树」,因此。的时候,我们可以什么都不选,「空集」⼀种⽅案,因此。号结点作为头结点的话,它的「左⼦树的种类」就有。号结点作为头结点的话,它的「右⼦树的种类」就有。原创 2024-01-03 12:02:57 · 1082 阅读 · 3 评论 -
【算法挨揍日记】day45——474. 一和零、879. 盈利计划
这道题⽬⾮常难读懂,但是如果结合例⼦多读⼏遍,你就会发现是⼀个经典的「⼆维费⽤的背包问。注意注意注意,这道题⾥⾯出现了⼀个「⾄少」,和我们之前做过的背包问题不⼀样。⽼规矩,根据「最后⼀个位置」的元素,结合题⽬的要求,我们有「选择」最后⼀个元素或者「不。在⼀些物品中「挑选」⼀些出来,然后在满⾜某个「限定条件」下,解决⼀些问题,⼤概率。状态转移⽅程分析⽅式,⼀般都是「根据最后⼀步」的状况,来分情况讨论。际情况来看,如果这个任务的利润已经能够达标了,我们仅需在之前的任务中,挑选出。但是问题来了,我们的。原创 2024-01-03 12:02:33 · 835 阅读 · 0 评论 -
【算法挨揍日记】day44——518. 零钱兑换 II、279. 完全平方数
这⾥给出⼀个⽤「拆分出相同⼦问题」的⽅式,定义⼀个状态表⽰。在⼀些物品中「挑选」⼀些出来,然后在满⾜某个「限定条件」下,解决⼀些问题,⼤概率。状态转移⽅程分析⽅式,⼀般都是「根据最后⼀步」的状况,来分情况讨论。由于每⼀个物品都是⽆限多个的,因此是⼀个「完全背包」问题。根据「状态转移⽅程」,我们仅需「从上往下」填表即可。,根据思路那⾥的分析我们知道,可以根据⼩于等于。接下来的分析就是基于「完全背包」的⽅式来的。的完全平⽅数的最少数量简称为「最⼩数量」。这个数,我们分析⼀下如何求它的最⼩数量。原创 2024-01-03 12:02:01 · 843 阅读 · 0 评论 -
【算法挨揍日记】day43——DP42 【模板】完全背包、322. 零钱兑换
当我们发现,计算⼀个状态的时候,需要⼀个循环才能搞定的时候,我们要想到去优化。向就是⽤⼀个或者两个状态来表⽰这⼀堆的状态,通常就是⽤数学的⽅式做⼀下等价替换。在⼀些物品中「挑选」⼀些出来,然后在满⾜某个「限定条件」下,解决⼀些问题,⼤概率。状态转移⽅程分析⽅式,⼀般都是根据最后⼀步的状况,来分情况讨论。状态转移⽅程分析⽅式,⼀般都是根据「最后⼀步」的状况,来分情况讨论。我们多加⼀⾏,⽅便我们的初始化,此时仅需将第⼀⾏初始化为。,因此,需要把第⼀⾏除了第⼀个位置的元素,都设置成⽆穷。原创 2024-01-03 12:01:34 · 962 阅读 · 0 评论 -
【算法挨揍日记】day42——494. 目标和、1049. 最后一块石头的重量 II
1049. 最后一块石头的重量 II。原创 2024-01-03 12:00:53 · 1165 阅读 · 0 评论 -
【算法挨揍日记】day41——【模板】01背包、416. 分割等和子集
【模板】01背包_牛客题霸_牛客网你有一个背包,最多能容纳的体积是V。现在有n个物品,第i个物品的体积为 ,。题目来自【牛客题霸】原创 2024-01-03 12:00:22 · 852 阅读 · 0 评论 -
【算法挨揍日记】day40——712. 两个字符串的最小ASCII删除和、718. 最长重复子数组
⼦数组是数组中「连续」的⼀段,我们习惯上「以某⼀个位置为结尾」来研究。但也要注意「下标的映射」关系,以及⾥⾯的值要保证「后续填表是正确的」。根据「状态转移」,我们需要「从上往下」填每⼀⾏,每⼀⾏「从左往右」。第⼀⾏表⽰第⼀个数组为空,此时没有重复⼦数组,因此⾥⾯的值设置成。因此,我们的思路就是按照「最⻓公共⼦序列」的分析⽅式来分析。为了处理「越界」的情况,我们可以添加⼀⾏和⼀列,「从上往下」填每⼀⾏,每⼀⾏「从左往右」。引⼊空串后,⼤⼤的「⽅便我们的初始化」。共的 、⻓度最⻓的「⼦数组」的⻓度。原创 2024-01-03 11:56:52 · 928 阅读 · 0 评论 -
【算法挨揍日记】day39——10. 正则表达式匹配、97. 交错字符串
优化:当我们发现,计算⼀个状态的时候,需要⼀个循环才能搞定的时候,我们要想到去优化。然后根据两个区间上「最后⼀个位置的字符」,来进⾏「分类讨论」,从⽽确定「状态转移。然后根据两个区间上「最后⼀个位置的字符」,来进⾏「分类讨论」,从⽽确定「状态转移。根据「状态转移」,我们需要「从上往下」填每⼀⾏,每⼀⾏「从左往右」。由于需要⽤到前⼀⾏和前⼀列的状态,我们初始化第⼀⾏、第⼀列即可。位置的值,因此需要初始化「第⼀个位置」以及「第⼀⾏」和「第⼀。最后⼀个位置的字符时,说明不可能是两者的交错字符串。原创 2024-01-03 11:56:19 · 781 阅读 · 0 评论 -
【算法挨揍日记】day38——115. 不同的子序列、44. 通配符匹配
优化:当我们发现,计算⼀个状态的时候,需要⼀个循环才能搞定的时候,我们要想到去优化。化的⽅向就是⽤⼀个或者两个状态来表⽰这⼀堆的状态。然后根据两个区间上「最后⼀个位置的字符」,来进⾏「分类讨论」,从⽽确定「状态转移。然后根据两个区间上「最后⼀个位置的字符」,来进⾏「分类讨论」,从⽽确定「状态转移。由于需要⽤到前⼀⾏和前⼀列的状态,我们初始化第⼀⾏、第⼀列即可。的⼦串中有⼀个空串和它⼀样,因此初始化第⼀⾏全部为。中的所有符合要求的⼦序列的后⾯,再加上⼀个字符。只能继承上个状态⾥⾯求得的⼦序列,原创 2024-01-03 11:55:53 · 886 阅读 · 0 评论 -
【算法挨揍日记】day37——1143. 最长公共子序列、1035. 不相交的线
是指这样一个新的字符串:它是由原字符串在不改变字符的相对顺序的情况下删除某些字符(也可以不删除任何字符)后组成的新字符串。只不过是在整数数组中做⼀次「最⻓的公共⼦序列」,代码⼏乎⼀模⼀样,这⾥就不再赘述算法原。如果要保证两条直线不相交,那么我们「下⼀个连线」必须在「上⼀个连线」对应的两个元素的。我们要三者的最⼤值即可。⾯,但是我们求的是最⼤值,并不影响最终结果。但也要注意「下标的映射关系」,以及⾥⾯的值要「保证后续填表是正确的」。分析状态转移⽅程的经验就是根据「最后⼀个位置」的状况,分情况讨论。原创 2024-01-03 11:55:26 · 787 阅读 · 0 评论 -
【算法挨揍日记】day36——516. 最长回文子序列、1312. 让字符串成为回文串的最少插入次数
关于「单个字符串」问题中的「回⽂⼦序列」,或者「回⽂⼦串」,我们的状态表⽰研究的对象⼀。关于「回⽂⼦序列」和「回⽂⼦串」的分析⽅式,⼀般都是⽐较固定的,都是选择这段区域的「左。⽂串」,「⾸尾加上两个相同的元素之后也依旧是回⽂串」。关于「单个字符串」问题中的「回⽂⼦序列」,或者「回⽂⼦串」,我们的状态表⽰研究的对象⼀。关于「回⽂⼦序列」和「回⽂⼦串」的分析⽅式,⼀般都是⽐较固定的,都是选择这段区域的「左。⽂串」,「⾸尾加上两个相同的元素之后也依旧是回⽂串」。区间内的所有的⼦序列中,最⻓的回⽂⼦序列的⻓度。原创 2024-01-03 11:54:47 · 825 阅读 · 0 评论 -
【算法挨揍日记】day35——1745. 分割回文串 IV、132. 分割回文串 II
在647题的基础上, 我们从后向前遍历dp表中所有为true的情况,看否可以将他们分为3段。优化:我们在状态转移⽅程⾥⾯分析到,要能够快速判读字符串⾥⾯的⼦串是否回⽂。我们先把表⾥⾯的值初始化为「⽆穷⼤」。区间上的字符串已经是回⽂串了,最⼩的回⽂串就是。由于我们要的是最⼩值,因此应该循环遍历⼀遍。位置上的⼦串能够构成⼀个回⽂串,那么。位置上的⼦串不能构成⼀个回⽂串,此时。表,⾥⾯保存所有⼦串是否回⽂的信息。区间上的字符串,最少分割的次数。间上最少回⽂串的个数 + 1,即。的取值,拿到⾥⾯的最⼩值即可。原创 2024-01-03 11:53:55 · 903 阅读 · 0 评论 -
【算法挨揍日记】day34——647. 回文子串、5. 最长回文子串
具有不同开始位置或结束位置的子串,即使是由相同的字符组成,也会被视作不同的子串。根据「状态转移⽅程」,我们需要「从下往上」填写每⼀⾏,每⼀⾏的顺序⽆所谓。我们可以先「预处理」⼀下,将所有⼦串「是否回⽂」的信息统计在。如果字符串的反序与原始字符串相同,则该字符串称为回文字符串。因为我们的状态转移⽅程分析的很细致,因此⽆需初始化。为了能表⽰出来所有的⼦串,我们可以创建⼀个。是字符串中的由连续字符组成的一个序列。的时候:不可能是回⽂串,的⼦串,是否是回⽂串。:此时也⼀定是回⽂串,:此时⼀定是回⽂串,原创 2024-01-03 11:49:31 · 890 阅读 · 0 评论 -
【算法挨揍日记】day33——1027. 最长等差数列、446. 等差数列划分 II - 子序列
根据等差序列的特性,我们仅需知道序列⾥⾯的最后两个元素,就可以确定这个序列的样⼦。根据等差序列的特性,我们仅需知道序列⾥⾯的最后两个元素,就可以确定这个序列的样⼦。之前,放⼊哈希表中。我们⽆法推导状态转移⽅程,因此我们定义的状态表⽰需要能够确定⼀个等差序列。这种⽅式,我们仅需保存最近的元素的下标,不⽤保存下标数组。我们⽆法推导状态转移⽅程,因此我们定义的状态表⽰需要能够确定⼀个等差序列。位置元素为结尾的「所有⼦序列」中,最⻓的等差序列的⻓度。位置的元素为结尾的所有的⼦序列中,最⻓的等差序列的。原创 2023-11-24 15:36:20 · 3423 阅读 · 12 评论 -
【算法挨揍日记】day32——1218. 最长定差子序列、873. 最长的斐波那契子序列的长度
但是这⾥有⼀个⾮常致命的问题,那就是我们⽆法确定 i 结尾的斐波那契序列的样⼦。根据斐波那契数列的特性,我们仅需知道序列⾥⾯的最后两个元素,就可以确定这个序列的样⼦。中删掉任意数量的元素(也可以不删),而不改变其余元素的顺序。位置元素为结尾的「所有⼦序列」中,最⻓的斐波那契⼦数列的⻓度。中最长等差子序列的长度,该子序列中相邻元素之间的差等于。位置的元素为结尾所有的⼦序列中,最⻓的等差⼦序列的⻓度。前,将所有的「元素 + 下标」绑定在⼀起,放到哈希表中。位置的元素为结尾的所有的⼦序列中,最⻓的斐波那契⼦。原创 2023-11-24 15:14:26 · 900 阅读 · 0 评论 -
【算法挨揍日记】day31——673. 最长递增子序列的个数、646. 最长数对链
这道题⽬让我们在数对数组中挑选出来⼀些数对,组成⼀个呈现上升形态的最⻓的数对链。我们整数数组中挑选⼀些数,让这些数组成⼀个最⻓的上升序列?为结尾的最⻓递增⼦序列的「⻓度」是多少,我怎么知道最⻓递增⼦序列的个数呢?在知道每⼀个位置结尾的最⻓递增⼦序列的⻓度时,我们来看看能否得到。为结尾的最⻓递增⼦序列的「个数」。,在累加的时候可能会把「不是最⼤⻓度的情况」累。因此我们解决问题的⽅向,应该在「最⻓递增⼦序。结尾的最⻓递增序列的⻓度时,我们已经知道。位置的数对为结尾时,最⻓数对链的⻓度。原创 2023-11-19 10:01:49 · 284 阅读 · 0 评论 -
【算法挨揍日记】day30——300. 最长递增子序列、376. 摆动序列
从之前的状态推导出来。因为我们不知道前⼀个最⻓摆动序列的结尾处是递增的,还是递减的。此,我们需要状态表⽰能表⽰多⼀点的信息:要能让我们知道这⼀个最⻓摆动序列的结尾是递增的。是由数组派生而来的序列,删除(或不删除)数组中的元素而不改变其余元素的顺序。位置元素为结尾的所有的⼦序列中,最后⼀个位置呈现「上升趋势」的最⻓摆。位置元素为结尾的所有的⼦序列中,最后⼀个位置呈现「下降趋势」的最⻓摆。表⾥⾯的最⼤值」,我们可以在填表的时候,顺便更新⼀个「最⼤值」。位置元素为结尾的「所有⼦序列」中,最⻓递增⼦序列的⻓度。原创 2023-11-19 10:00:57 · 224 阅读 · 0 评论 -
【算法挨揍日记】day29——139. 单词拆分、467. 环绕字符串中唯一的子字符串
可以在最前⾯加上⼀个「辅助结点」,帮助我们初始化。,为了确定当前的字符串能否由字典⾥⾯的单词构成,根据最后⼀个单词的起始位。表⾥⾯的和,因为会有重复的结果。不要求字典中出现的单词全部都使用,并且字典中的单词可以重复使用。样就没有下标的映射关系的问题了,同时还能处理「空串」的情况。中找到答案,后⾯部分的⼦串可以在字典⾥⾯找到。区间内的字符串,能否被字典中的单词拼接⽽成。可以根据「实际情况」,将表⾥⾯的值都初始化为。位置的元素为结尾的所有⼦串⾥⾯,有多少个在。值,我们仅需保留「最⼤」的即可,其余。原创 2023-11-19 10:00:10 · 265 阅读 · 0 评论 -
【算法挨揍日记】day28——413. 等差数列划分、978. 最长湍流子数组
所以说,我们定义的状态表⽰必须让等差数列「有迹可循」,让状。因此,我们可以「固定死等差数列的结尾」,定义下⾯的状态表。由于需要⽤到前两个位置的元素,但是前两个位置的元素⼜⽆法构成等差数列,因此。者⼜能构成⼀个新的等差数列,因此要在之前的基础上再添上⼀个等差数列,于是。由于我们的研究对象是「⼀段连续的区间」,如果我们状态表⽰定义成。因为我们要的是所有的等差数列的个数,因此需要返回整个。的状态转移时,会⽆从下⼿,因为我们不清楚前⾯那么多。位置的元素为结尾」的等差数列有多少种。为结尾的等差数列就不存在,此时。原创 2023-11-19 09:59:18 · 71 阅读 · 0 评论 -
【算法挨揍日记】day27——152. 乘积最大子数组、1567. 乘积为正数的最长子数组长度
这⾥的推导⽐较绕,因为不断的出现「正数和负数」的分情况讨论,我们只需根据下⾯的规则,严。表⽰「所有以 i 结尾的⼦数组,乘积为正数的最⻓⼦数组的⻓度」。为正数的最⻓⼦数组」,还需要⼀个「乘积为负数的最⻓⼦数组」。为结尾的所有⼦数组的最⼤乘积」,对于所有⼦数组,可以分为下。为结尾的所有⼦数组的最⼩乘积」,对于所有⼦数组,可以分为下。结尾的所有⼦数组中,乘积为「正数」的最⻓⼦数组的⻓度;结尾的所有⼦数组中,乘积为「负数」的最⻓⼦数组的⻓度。为结尾的所有⼦数组,乘积为负数的最⻓⼦数组的⻓。原创 2023-11-19 09:58:30 · 87 阅读 · 0 评论 -
【算法挨揍日记】day26——53. 最大子数组和、918. 环形子数组的最大和
本题与「最⼤⼦数组和」的区别在于,考虑问题的时候不仅要分析「数组内的连续区域」,还要考。但是,由于数组内有可能全部都是负数,第⼀种情况下的结果是数组内的最⼤值(是个负数),第。由于「最⼤⼦数组和」的⽅法已经讲过,这⾥只提⼀下「最⼩⼦数组和」的求解过程,其实与「最。其中,对于第⼀种情况,我们仅需按照「最⼤⼦数组和」的求法就可以得到结果,记为。如果数组⾸尾相连的⼀部分是最⼤的数组和,那么数组中间就会空出来⼀部分;是不变的,那么中间连续的⼀部分的和⼀定是最⼩的;两种情况下的最⼤值,就是我们要的结果。原创 2023-11-19 09:57:37 · 87 阅读 · 0 评论 -
【算法挨揍日记】day25——123. 买卖股票的最佳时机 III、188. 买卖股票的最佳时机 IV
f[i][j]表示第i天结束后,完成了j次交易后处于可交易状态下的最大利润。f[i][j]表示第i天结束后,完成了j次交易后处于买入状态下的最大利润。你不能同时参与多笔交易(你必须在再次购买前出售掉之前的股票)。你不能同时参与多笔交易(你必须在再次购买前出售掉之前的股票)。设计一个算法来计算你所能获取的最大利润。设计一个算法来计算你所能获取的最大利润。也就是说,你最多可以买。个元素是一支给定的股票在第。返回值,最后一行的最大值。是某支给定的股票在第。给定一个数组,它的第。原创 2023-11-19 09:56:30 · 36 阅读 · 0 评论 -
【算法挨揍日记】day24——309. 买卖股票的最佳时机含冷冻期、714. 买卖股票的最佳时机含手续费
天不在冷冻期的时候买⼊,由于买⼊需要花 钱,所以此时最⼤收益为: dp[i - 1][1] - prices[i] 两种情况应取最⼤值,因此: dp[i][0] = max(dp[i - 1][0], dp[i - 1][1] - prices[i])。处于「买⼊」状态的时候,我们现在有股票,此时不能买股票,只能继续持有股票,或者卖。:此时要想处于「买⼊」状态,必须把第⼀天的股票买了,因此。天结束后,处于「冷冻期」状态,此时的最⼤利润。天结束后,处于「买⼊」状态,此时的最⼤利润;原创 2023-11-19 09:55:44 · 52 阅读 · 0 评论 -
【算法挨揍日记】day23——740. 删除并获得点数、LCR 091. 粉刷房子
当然,因为市场上不同颜色油漆的价格不同,所以房子粉刷成不同颜色的花费成本也是不同的。个,每个房子可以被粉刷成红色、蓝色或者绿色这三种颜色中的一种,你需要粉刷所有的房子并且使其相邻的两个房子颜色不能相同。返回值:min(min(f[n-1],g[n-1]),v[n-1]);f[i],g[i]表示以i为结尾,i位置选和i位置不选的最大点数。f[i]表示以i位置为结尾,选择红色(第一个)的最小金额。v[i]表示以i位置为结尾,选择绿色(第3个)的最小金额。表示第 1 号房子粉刷成绿色的花费,以此类推。原创 2023-11-19 09:54:44 · 56 阅读 · 0 评论 -
【算法挨揍日记】day22——面试题 17.16. 按摩师、213. 打家劫舍 II
一个有名的按摩师会收到源源不断的预约请求,每个预约都可以选择接或不接。给定一个预约请求序列,替按摩师找到最优的预约集合(总预约时间最长),返回总的分钟数。你是一个专业的小偷,计划偷窃沿街的房屋,每间房内都藏有一定的现金。同时,相邻的房屋装有相互连通的防盗系统,状态表示:f[i],g[i]表示以i为结尾,i预约和i不预约的最长的预约时长。f[i],g[i]表示以i为结尾,i偷和i不偷的最大金额。返回值:max(f[n-1],g[n-1])返回值:max(f[n-1],g[n-1])本题相对原题稍作改动。原创 2023-11-19 09:53:57 · 94 阅读 · 0 评论 -
【算法挨揍日记】day21——64. 最小路径和、174. 地下城游戏
任何房间都可能对骑士的健康点数造成威胁,也可能增加骑士的健康点数,包括骑士进入的左上角房间以及公主被监禁的右下角房间。因此状态转移方程为:dp[i][j]=min(dp[i+1][j],dp[i][j+1])-dungeon[i][j]这里值得注意的是dp【i】【j】可能为负数,因此要dp[i][j]=max(1,dp[i][j])初始化:dp[0][i]=INT_MAX,dp[i][0]=INT_MAX,dp[0][1]=0。当向下走的时候:x+dungeon[i][j]>=dp[i+1][j]原创 2023-11-19 09:53:04 · 138 阅读 · 0 评论 -
【算法挨揍日记】day20——LCR 166. 珠宝的最高价值、931. 下降路径最小和
可以从第一行中的任何元素开始,并从每一行中选择一个元素。在下一行选择的元素和当前行所选元素最多相隔一列(即位于正下方或者沿对角线向左或者向右的第一个元素)。状态转移方程:dp[i][j]=max(dp[i-1][j],dp[i][j-1])+frame[i-1][j-1]初始化:dp[i][0]和dp[0][i](这里的i是从0到len1和len2)都为0。状态表示:dp【i】【j】表示为到(i,j)位置后的最小和。状态表示: dp[i][j]表示到达(i,j)后的最大价值。为该位置珠宝的价值。原创 2023-11-19 09:51:10 · 52 阅读 · 0 评论 -
【算法挨揍日记】day19——62. 不同路径、63. 不同路径 II
状态转移方程:当ob(i-1,j-1)等于0的时候,如果向下向右的可以的话,ob(i-1,j-1)就为0,为1的话就没有意义了。因为我们从(1,1位置开始遍历,我们要保证1,1位置的值要为1),因此我们需要将(0,1)位置设为1,来满足状态转移方程。机器人试图达到网格的右下角(在下图中标记为 “Finish” )。机器人试图达到网格的右下角(在下图中标记为 “Finish”)。状态表示:dp[i][j]表示在到达(i,j)位置后,路线的总数。状态表示: dp[i][j]在到达(i,j)后,路线的总数。原创 2023-11-05 09:15:21 · 555 阅读 · 2 评论 -
【算法挨揍日记】day18——746. 使用最小花费爬楼梯、91. 解码方法
【算法挨揍日记】day18——746. 使用最小花费爬楼梯、91. 解码方法的解题思路和解题代码原创 2023-11-02 19:48:03 · 160 阅读 · 15 评论 -
【算法挨揍日记】day17——1137. 第 N 个泰波那契数、面试题 08.01. 三步问题
【算法挨揍日记】day17——1137. 第 N 个泰波那契数、面试题 08.01. 三步问题的解题思路和解题代码原创 2023-10-24 17:43:04 · 155 阅读 · 2 评论 -
【算法挨揍日记】day16——525. 连续数组、1314. 矩阵区域和
【算法挨揍日记】day16——525. 连续数组、1314. 矩阵区域和的算法和解题思路解题代码原创 2023-10-18 02:27:49 · 943 阅读 · 0 评论 -
【算法挨揍日记】day15——560. 和为 K 的子数组、974. 和可被 K 整除的子数组
【算法挨揍日记】day15——560. 和为 K 的子数组、974. 和可被 K 整除的子数组的解题思路分析和解题代码原创 2023-10-18 02:27:43 · 223 阅读 · 1 评论 -
【算法挨揍日记】day14——724. 寻找数组的中心下标、238. 除自身以外数组的乘积
【算法挨揍日记】day14——724. 寻找数组的中心下标、238. 除自身以外数组的乘积的解题思路和解题代码原创 2023-10-11 19:16:47 · 308 阅读 · 2 评论 -
【算法挨揍日记】day13—— DP34 【模板】前缀和、DP35 【模板】二维前缀和
【算法挨揍日记】day13—— DP34 【模板】前缀和、DP35 【模板】二维前缀和的算法解析和解题代码原创 2023-10-11 18:44:05 · 226 阅读 · 0 评论 -
【算法小课堂】二分查找算法
二分查找算法的原理解析和二分查找算法的模版原创 2023-10-08 10:01:16 · 1045 阅读 · 131 评论 -
【算法挨揍日记】day12——153. 寻找旋转排序数组中的最小值、LCR 173. 点名
【算法挨揍日记】day12——153. 寻找旋转排序数组中的最小值、LCR 173. 点名的解题思路和解题代码原创 2023-10-10 15:37:32 · 177 阅读 · 2 评论 -
【算法挨揍日记】day11——852. 山脉数组的峰顶索引、162. 寻找峰值
【算法挨揍日记】day11——852. 山脉数组的峰顶索引、162. 寻找峰值的解题思路和代码原创 2023-10-06 12:36:46 · 219 阅读 · 14 评论 -
【算法挨揍日记】day09——35. 搜索插入位置、69. x 的平方根
【算法挨揍日记】day09——35. 搜索插入位置、69. x 的平方根的解题思路和代码原创 2023-10-02 11:37:31 · 177 阅读 · 1 评论 -
【算法挨揍日记】day10——704. 二分查找、34. 在排序数组中查找元素的第一个和最后一个位置
【算法挨揍日记】day09——704. 二分查找、34. 在排序数组中查找元素的第一个和最后一个位置的解题思路和代码原创 2023-10-01 14:35:10 · 258 阅读 · 7 评论