
力扣HOT100
主要介绍自己刷题时的思考过程和总结
编程绿豆侠
HFUT本
NUDT研二在读
毕业就算成功
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
力扣HOT100之技巧:75. 颜色分类
但是,使用快速排序无法通过一次扫描就将整个数组排序完成,还可以使用更高效的方法。我感觉灵神的题解也写得挺通俗易懂的,感觉灵神的题解写的特别好,还是建议去看。函数来实现对原数组的排序,这里我直接使用快速排序对原数组进行排序了,也是复习一下基于快慢指针的快速排序写法。面试手撕快排的思路参考。用时击败100%,还行。以下是根据灵神的题解写出来的代码。这道题实际上就是让我们不用。原创 2025-06-12 16:55:29 · 100 阅读 · 0 评论 -
力扣HOT100之技巧:169. 多数元素
这道题如果不考虑空间复杂度和时间复杂度的限制的话很好做,一种思路是通过一次遍历将所有元素的数量记录在一个哈希表中,然后我们直接返回出现次数最多的键即可。另一种思路是直接对数组进行排序,数组中间的值一定是多数元素,因为该元素超过半数,在有序的状态下,无论如何都会在数组的中间位置出现,这个也很好想。被减为负数时,说明当前认定的多数元素可能不是真正的多数元素,我们将。才做出来的,感觉他对摩尔投票法讲解的还不错,也可以结合。),无论数组如何排列,最后一定是多数的票数占优,最后。时,我们将当前多数元素的数量。原创 2025-06-12 16:12:09 · 182 阅读 · 0 评论 -
力扣HOT100之技巧:136. 只出现一次的数字
我们还需要使用其他的技巧,这里我们使用异或操作。这道题一开始想着用哈希表来做,但是如果用哈希表来做的话空间复杂度为。原创 2025-06-12 11:16:56 · 34 阅读 · 0 评论 -
力扣HOT100之贪心算法:763. 划分字母区间
这道题之前刷代码随想录的时候做过,现在回过头来做,又不记得了😅。我们首先用一个哈希表来统计每个字母出现的最大下标,这里我们定义一个长度为。时,说明我们已经遍历到了此段字符串的末尾,我们需要收获结果,直接将。,然后进行下一段字符串的统计,当遍历完整个字符串。的时候,不断更新这段字符串的最大覆盖范围,即。中的所有字符出现的最大下标后,我们再用一个。代表一段字符串的终止下标,也初始化为。中,然后我们再更新下一段字符串的起点。代表一段字符串的起始下标,初始化为。,然后我们遍历字符串,执行。时,返回最终的结果。原创 2025-06-12 10:33:43 · 120 阅读 · 0 评论 -
力扣HOT100之贪心算法:45. 跳跃游戏 II
处,则说明我们已经达到了当前覆盖范围的边界,我们需要先判断是否已经到达数组的边界,如果还没到达,则当前是。由于这道题保证一定能跳到终点,所以我们只需要考虑如何花最少的次数跳到终点,这里我们定义。,没想到今天的感受和当时的感受都一模一样。进入下次跳跃的覆盖范围,我们再不断地更新下下次跳跃的最远覆盖范围,即。已经到达了数组边界,则无需进行下一次跳跃,直接退出循环即可。的基础,这道题会好做一点,但是依旧想不出来思路,回去看了下。代表本次跳跃后所能达到的覆盖范围的最远边界,移动到下一次跳跃后的覆盖范围的边界,即。原创 2025-06-11 17:46:44 · 283 阅读 · 0 评论 -
力扣HOT100之贪心算法:55. 跳跃游戏
来记录最大覆盖范围,遍历数组的每一个元素,不断地更新最大覆盖范围,当最大覆盖范围达到或者超过。之前刷代码随想录的时候做过这道题,现在做又忘完了(ˉ▽ˉ;并没有把这个元素覆盖住,此时我们退出循环,直接返回。的范围时,则说明我们无法通过跳跃的方式到达当前的。时,则说明可以通过跳跃达到数组的末端,直接返回。,一下就明白了,这道题就是定义一个变量。原创 2025-06-11 16:28:51 · 129 阅读 · 0 评论 -
力扣HOT100之贪心算法:121. 买卖股票的最佳时机
数组求元素和,只要元素和出现了负数(对利润没有贡献,不如不买股票),则立刻将。这道题直接构造一个差分数组来做,假设我在第。记录此期间产生的最大利润,每一次计算完。天卖出股票,那么所获得的利润为。,然后我们可以构造一个差分数组。因此我们再定义一个变量。,同时我们用一个变量。原创 2025-06-11 15:50:58 · 102 阅读 · 0 评论 -
力扣HOT100之堆:295. 数据流的中位数
这道题主要是要设计出一种数据结构,能够方便的算出中位数,这里也可以用数组来实现,但是每一次计算中位数都需要将数组进行排序,十分耗时,我们希望设计这样一种结构:当我们需要计算中位数时,应当以。综上,我们可以用两个优先队列(堆)来实现,一个定义为最大堆,用于存储较小的一半元素,另一个定义为最小堆,用于存储较大的另一半元素,因此,我们规定:左侧的元素最多仅比右侧的元素多一个,右侧的元素个数在任何情况下都不会超过左侧元素。的时间复杂度找到中间或者中间的两位数,并直接计算,对于其他元素我们并不关心。原创 2025-06-11 11:13:41 · 122 阅读 · 0 评论 -
力扣HOT100之堆:347. 前 K 个高频元素
看了一下灵神的题解,我觉得他提到的桶排序方法还是很通俗易懂的。中,我们遍历一遍哈希表,将对应的元素添加到对应的桶子里,最后,我们从后向前遍历。我们首先定义一个哈希表,为了保证插入操作的耗时不会过长,这里我们使用。,如果遇到长度不为0的一维数组(桶子),则将桶中的所有元素添加到结果。,其中每一个一维数组中存放的元素出现频次相同,我们定义:在。时,说明已经查找完毕,我们直接结束遍历,将。,统计每个元素出现的频次,将键值对存储在。中,然后我们定义一个二维数组。来实现,我们先遍历数组。减去桶中的元素个数,当。原创 2025-06-10 19:18:19 · 162 阅读 · 0 评论 -
力扣HOT100之堆:215. 数组中的第K个最大元素
这道题是大厂面试的高频面试题,昨天面网易互娱的时候被问到了这道题,无论是手撕快速排序代码还是面试口头描述思路,我们都需要熟练掌握快速排序的写法,在面试中为了求稳,我们需要掌握最简单,最易记的一种实现方式,这里我推荐。因此我们在进行过一轮快速排序后,直接判断枢轴所在的下标为多少,如果枢轴所在的下标恰好为。,那我们只需要对枢轴左侧的区间进行排序,右侧不需要管。大的元素,因此我们并不需要将整个数组都进行快速排序,我们只需要将第。,那我们只需要对枢轴右侧的区间进行排序,左侧不需要管。大的元素,我们直接将其赋值给。原创 2025-06-10 16:11:30 · 201 阅读 · 0 评论 -
力扣HOT100之栈:84. 柱状图中最大的矩形
我们定义的是从从栈底到栈顶单调递增的栈,所以我们通过下标来遍历数组中的所有元素,当栈不为空且当前遍历到的元素小于栈顶元素时,触发计算条件,我们将栈顶对应的高度记录下来,并将栈顶弹出,再将当前的下标减去新的栈顶元素对应的下标再减一(来维护最大矩形面积,在计算完面积以后,新的栈顶对应的高度仍然可能大于当前的柱子高度,因此我们需要持续地计算矩形的面积,直到当前柱子的高度大于等于栈顶高度,才将其压入栈中。的单调性还是略有区别的。当时刷代码随想录的时候刷过这道题,当时就觉得很难,现在回过头来看依旧很难(ˉ▽ˉ;原创 2025-06-10 11:19:53 · 306 阅读 · 0 评论 -
力扣HOT100之栈:739. 每日温度
然后将栈顶元素弹出,注意,这应当是一个持续的过程,因为弹出原来的元素后,新的栈顶对应的温度仍有可能低于当前遍历到的温度,所以我们需要不断地对比和赋值,直到当前温度低于栈顶的温度或栈被清空,则我们才将当前遍历到的下标压入栈中。这道题是单调栈的一个经典应用,这里我们使用单调递减的栈(从栈底到栈顶单调递减)来实现,首先我们创建一个与。循环,通过下标访问的方式遍历所有元素,当栈不为空且当前遍历到的元素大于栈顶对应的元素时,我们将。也赋值完成,我们直接将。原创 2025-06-10 09:44:35 · 164 阅读 · 0 评论 -
力扣HOT100之栈:394. 字符串解码
中(由于字符是无法添加到存储字符串的栈中的,因此这里需要将单个字符转换为字符串再压入栈中),如果遇到了。的形式,因此我们需要将栈中对应的中括号和数字弹出并正确处理后,将其压入栈中,以便于后续最终结果的拼接。,我们将其弹出,接下来就是数字部分,注意,字符串中的数字可能不止一位,可能会出现。函数来判断当前遍历到的字符串是否为数字字符,同样,我们也用一个字符串变量。来接收所有的数字,拼接成正确的形式,然后我们直接调用。,则我们需要进行进一步的处理,首先,中的所有的字符,如果当前字符不是。中的字符串拼接起来即可。原创 2025-06-09 19:43:13 · 506 阅读 · 0 评论 -
力扣HOT100之栈:155. 最小栈
时间内找到栈中的最小元素呢?我们可以维护一个前缀表,前缀表中维护着当前位置及前面插入的元素中的最小元素,因此我们可以定义一个。(主要是为了后续第一个元素的插入能正常执行),然后后续插入元素时,第一个元素为要插入的元素。这道题有点难绷,我以为这道题需要用底层的其他容器来实现,甚至想用。,第一个元素为插入的元素值,第二个值则为最小前缀,用来维护。来实现,后面看了下灵神的题解发现我们只需要重点解决。,这样,我们就维护了栈中的最小元素,当我们调用。其余的函数我们都可以通过。,那么我们如何实现在。原创 2025-06-09 09:58:56 · 224 阅读 · 0 评论 -
力扣HOT100之栈:20. 有效的括号
时,我们就将其压入栈中,否则,我们需要判断与栈顶的括号是否匹配,当栈不为空且栈顶元素为。当循环结束后,如果栈为空,则括号匹配,否则不匹配,我们直接返回。这道题属于是栈的经典应用了,属于入门题,我们先定义一个存放字符的栈。对应的左括号时,我们将栈顶元素弹出,否则一定是不匹配,此时直接返回。原创 2025-06-09 08:53:18 · 206 阅读 · 0 评论 -
力扣HOT100之二分查找:4. 寻找两个正序数组的中位数
在满足以上性质以后,我们可以进行进一步分析,左侧的元素可以用一根线串起来,如下所示。,我们需要执行条件四的维护操作,而条件三应当想办法使其成立,在这种情况下,应当假设。,同时我们不难发现,无论元素总数为奇数还是偶数,绳子上的元素个数均等于。个,针对这种情况,我们只需要选出红色圈内的最大值,即可求出中位数。用绳子将左侧的所有元素穿起来,绳子两头的右边一位就是对应的元素下标。及其右边的元素数量多1,则我们就找到了中位数,下面简单举个例子。讲得还不错,我是参考他的思路写出来的,这里把他的思路记录一下。原创 2025-06-08 17:44:45 · 811 阅读 · 0 评论 -
力扣HOT100之二分查找:153. 寻找旋转排序数组中的最小值
的前置题,有点没看懂力扣为什么要这样安排题目顺序,应该把这道题按排在前面才对啊。这道题的思路已经在上一道题的思路中说过了,这里就直接复制粘贴。我们阅读完题目不难看出,经过旋转后,数组。原创 2025-06-07 15:05:41 · 320 阅读 · 0 评论 -
力扣HOT100之二分查找:33. 搜索旋转排序数组
作为前置题,有了这道题的基础以后做本题就比较轻松了。这里先简单说一下寻找旋转排序数组中的最小值。这道题第一次做,没什么思路,直接去看灵神的题解了,看完题解才发现需要先做。我们阅读完题目不难看出,经过旋转后,数组。原创 2025-06-07 12:39:37 · 504 阅读 · 0 评论 -
力扣HOT100之二分查找: 34. 在排序数组中查找元素的第一个和最后一个位置
这道题完全没有思路,直接去看灵神的题解了,这道题的大概思路就是额外定义一个二分查找函数,对于给定数组。,我们需要进一步寻找结束位置。至于结束位置,我们直接调用该二分查找函数,查找。的元素下标,当返回的下标处的元素恰好等于。时,该下标就是区间的开始位置,若不等于。,因此我们直接返回起始坐标和结束坐标。,返回的下标一定是第一个大于等于。的元素下标,不管数组中是否真的有。,此时下标的左边就是最后一个。,则说明数组中至少有一个。,返回第一个大于等于。,则整个数组中都没有。原创 2025-06-05 20:45:42 · 354 阅读 · 0 评论 -
力扣HOT100之二分查找:74. 搜索二维矩阵
将每一行的第一个元素当作一个数组中的元素,然后对这个数组进行二分查找,如果直接找到了。才进行进一步的搜索,当遍历完整层都没有找到时,返回。所以我们需要判断一下退出二分查找后的。所在的位置,此时我们应当去上一层(,此时我们应当去上一层(,此时我们无法去上一层(,否则退出循环的时候。为61,则退出循环时。原创 2025-06-04 23:48:00 · 696 阅读 · 0 评论 -
力扣HOT100之二分查找:35. 搜索插入位置
这道题属于是二分查找的入门题了,我依稀记得一些二分查找的编码要点,但是最后还是写出了一个死循环,无语(ˉ▽ˉ;,这才发现自己分情况只分了两种,最后导致死循环。本题我们采用左闭右开的二分查找法,左区间的搜索范围为。,我们要确保这两个查找区间在初始状态下覆盖整个数组的元素,因此。,而右区间的搜索范围为。原创 2025-06-04 11:55:25 · 388 阅读 · 0 评论 -
力扣HOT100之多维动态规划:72. 编辑距离
word1 = “sea”, word2 = “see”,这种情况只需要把word1的a替换成e即可,此时dp[i][j] = dp[i - 1][j - 1] + 1,这个公式对应替换情况;word1 = “sea”, word2 = “se”,这种情况只需要把word1的a删除即可,此时dp[i][j] = dp[i - 1][j] + 1,这个公式对应删除情况;时,我们很好理解,我们只需要管之前的部分即可,这里重点说下为什么要这样初始化,当初始化。的做题思路,我们依旧采取相同的。5.打印数组(省略)原创 2025-06-04 09:53:19 · 404 阅读 · 0 评论 -
力扣HOT100之多维动态规划:1143. 最长公共子序列
这道题的子序列可以不连续,所以dp数组的定义和最长重复子数组不一样,我总结出一个规律,**如果涉及到不连续的子序列,那么dp数组的定义就是第一个数组考虑[0,i]范围内元素,第二个数组考虑[0,j]范围内元素的情况下,两个数组之间的公共最长子序列的长度为dp[i][j];如果涉及到连续的子序列,那么dp数组的定义就是,第一个数组以nums1[i]结尾,第二个数组以nums2[j]结尾的情况下,所能得到的最长公共子序列的长度。这道题之前刷代码随想录的时候做过,但是现在又给忘干净了,这道题需要用二维。原创 2025-06-03 21:17:40 · 456 阅读 · 0 评论 -
力扣HOT100之多维动态规划:5. 最长回文子串
这道题属于动态规划板块,但是我感觉这道题用动态规划相当晦涩难懂,看了一圈题解发现还是最好用,感觉这道题没有必要为了动态规划而动态规划,中心扩散法我感觉讲得很不错,非常通俗易懂,代码风格也很好,可以去看看他的视频。这道题就不用动态规划来做了,以后笔试面试遇到这道题就直接用了。原创 2025-06-03 17:23:34 · 422 阅读 · 0 评论 -
力扣HOT100之多维动态规划:64. 最小路径和
4.确定遍历顺序:从左往右,从上往下遍历。套路很像,思路也比较简单,用二维。思路比较简单,这里直接给代码了。的含义:从起点到位置为。5.打印数组(省略)原创 2025-06-02 16:31:57 · 330 阅读 · 0 评论 -
力扣HOT100之多维动态规划:62. 不同路径
由于机器人每一次只能向右或者向下移动,不存在走弯路的情况,从地图的左上角走到右下角,每一步都是有效的,不是无用功。数组来做相当简单,是一道入门题。4.确定遍历顺序:从左往右,从上往下遍历。处,然后再向下走一步;处有两种方式:一种是先设法到达。处,然后再向右走一步。的含义:从起点到位置为。处的路径数总是等于到达。5.打印数组(省略)原创 2025-06-02 15:39:25 · 230 阅读 · 0 评论 -
力扣HOT100之动态规划:32. 最长有效括号
这道题放在动态规划里属实是有点难为人了,感觉用动态规划来做反而更难理解了,这道题用索引栈来做相当好理解,这里先讲下索引栈的思路。原创 2025-06-02 11:13:29 · 579 阅读 · 0 评论 -
力扣HOT100之动态规划:416. 分割等和子集
这道题之前刷过代码随想录,现在只能想起一点点思路,最后还是去看视频了。这道题用二维dp数组或者一维dp数组都可以做,这篇博客把两种思路都讲一下。原创 2025-06-01 21:26:17 · 741 阅读 · 0 评论 -
力扣HOT100之动态规划:152. 乘积最大子数组
原因是可能负数乘以负数会得到最大的乘积,不能单纯地用上一个序列的最大值乘以当前值来判断是否能得到更大值。后来结合了一下灵神的题解,改良了一下动规五部曲,我们同时维护。这道题并不是代码随想录里的,我试着用动规五部曲来做,然后不能通过全部测试样例,在第109个测试样例卡住了,如下所示。为结尾的情况下,所能取到的非空连续子数组的最大乘积。结尾的数组中所能取到的最大非空连续子数组乘积为。结尾的数组中所能取到的最小非空连续子数组乘积为。个位置上的元素的含义为:以。原创 2025-05-31 23:40:36 · 470 阅读 · 0 评论 -
力扣HOT100之动态规划:300. 最长递增子序列
2.确定递推公式 dp[i] = max(dp[j] + 1, dp[i]) (只有nums[i] > nums[j]才会触发)范围内索赔能取到的最长严格递增子序列的长度,后面发现在写递推公式的时候怎么都写不对,这道题的。1.确定dp[i]的含义:以nums[i]为结尾的情况下,其最长严格递增子序列的长度。,因为最后一个元素不一定是最大元素,最大元素可能在前面的任意位置,例如数组。为结尾的情况下,其最长严格递增子序列的长度。结尾的子序列的下一个元素,我们需要对比。值得注意的是,我们最终要返回的不一定是。原创 2025-05-31 20:51:18 · 286 阅读 · 0 评论 -
力扣HOT100之动态规划:139. 单词拆分
数组的意义就很有意思:我们逐步增加字符串的长度(背包容量),直至恢复字符串本来的长度,然后我们在逐渐增加字符串长度的过程中不停地判断当前字符串能否被字典里的单词组成,很显然,假设字符串能够被字典中的单词组成,我们就一定可以在字符串长度增加到一定程度时,发现其正好与字典中的某个单词完全相等,我们将该长度时对应的。1.确定dp[i]的含义:在字符串的长度为i的情况下,该字符串能否用字典中的单词拼接出来。时,可以用字典中的单词组成,当逐渐将单词的长度扩大到原有的长度时,我们只需要判断。5.打印数组(省略)原创 2025-05-31 18:38:06 · 349 阅读 · 0 评论 -
力扣HOT100之动态规划:322. 零钱兑换
的套路是完全一样的,但是这道题不需要我们自己生成物品列表,函数的输入中已经给出了,但是这道题有一个坑,就是我们在初始化。这一步可能出现溢出的情况,所以我们应当初始化为一个稍小的较大值,如。的含义:在背包容量为j的情况下,装满背包的最少硬币个数为dp[j]4.确定遍历顺序:先物品,再背包(不涉及排列组合的问题,可以颠倒)数组的时候,所有的位置不应该赋值为。5.打印数组(省略)原创 2025-05-30 17:08:55 · 287 阅读 · 0 评论 -
力扣HOT100之动态规划:279. 完全平方数
这道题之前在刷代码随想录的时候做过,但是现在给忘干净了,现在甚至都不记得这是一个背包问题。这道题就是一个背包问题,这个问题可以抽象为:对于容量为。的背包,要计算出恰好装满这个背包的最少物品数。这道题没有排列数与组合数之分,所以先遍历背包或者先遍历物品都是可以的。可以选择放,也可以选择不放,上述两种情况对应的最少物品数分别为。4.确定遍历顺序:先遍历物品或者先遍历背包都可以。的含义:装满容量为j的背包所需要的最少物品数。的所有可能的平方数为物品,因此我们需要将。,由于我们遍历的过程中,物品。原创 2025-05-30 16:24:13 · 268 阅读 · 0 评论 -
力扣HOT100之动态规划:198. 打家劫舍
这道题的限制是相邻的两个房子不能同时偷,我们在将第。间房子只有两种状态:偷或者不偷,如果偷,那么第。间房子就不能偷了,这种情况下的最大收益为。的房子纳入考虑范围时所能取到的最大收益。,如果不偷,那么这种情况下的最大收益为。经过一系列迭代递推,最终的。4.确定遍历顺序:从左往右遍历。,所以我们要取其中的最大值作为。间房子纳入考虑范围时,第。就是我们返回的最终结果。5.打印数组(省略)原创 2025-05-30 10:25:39 · 169 阅读 · 0 评论 -
力扣HOT100之动态规划:118. 杨辉三角
2.确定递推公式:dp[i][j] = dp[i - 1][j - 1] + dp[i - 1][j];3.dp数组初始化:dp[i][0] = 1, dp[i][i] = 1。我们在初始化的时候就先将每一行的第一个元素和最后一个元素赋值为。1.确定dp[i][j]的含义:杨辉三角中第i行第j列的值。,然后就进入循环迭代,不断更新每个位置的值即可。4.确定遍历顺序:从左往右,从上往下遍历。5.打印数组(省略)原创 2025-05-29 17:26:08 · 244 阅读 · 0 评论 -
力扣HOT100之动态规划:70. 爬楼梯
这道题得用动态规划来做,用递归好像会超时。2.确定递推公式:dp[i] = dp[i - 1] + dp[i - 2]由于这本质上就是一个斐波那契数列,所以递推公式也很好想,只有到达第。3.dp数组初始化:dp[0] = 1, dp[1] = 1。1.确定dp[i]的含义:爬到第i阶楼梯的方法数。由于本题使用的是一维dp数组,因此。4.确定遍历顺序:从前往后遍历。5.打印数组(省略)原创 2025-05-29 16:10:46 · 329 阅读 · 0 评论 -
力扣HOT100之回溯:51. N 皇后
行及以后的行尚未放置皇后,不可能发生冲突,只需要向上检查即可)是否存在冲突,只要上述三种情况下都没有发现皇后,则说明当前位置可以放置皇后,将当前位置赋值为。这道题之前刷代码随想录的时候跳过了,然后今天是第一次做这个题目,感觉很难,然后去看了代码随想录对应的视频才做出来的。当递归调用返回后,需及时回溯,将之前的合法位置处的皇后及时赋值为空地。若不及时回溯,则随着循环的进行,每一行都会塞满皇后。列放置皇后是否合法,具体来说,我们通过检查同列,斜上45°和斜上135°(因为第。否则进入递归主体逻辑。原创 2025-05-28 23:57:16 · 264 阅读 · 0 评论 -
力扣HOT100之回溯:131. 分割回文串
这道题的基础,我们首先定义一个辅助函数,用于判断输入字符串是否为回文串,然后我们定义一个递归函数,用于搜索所有可能的结果。的长度时,则直接触发终止条件,我们此时收获结果,将一个存储了若干个回文子串的向量加入到结果中,否则就还没结束,进入递归主逻辑。处的子串就被分割出来,并添加到路径中了,我们就可以递归调用。在主逻辑中,我们定义一个一重循环,每循环一次,就说明下标。这道题自己A的,思路也不算难,不过需要利用。左侧的子串已经分割完毕,我们只需要考虑。是否为回文子串,如果为回文串,则可以将。原创 2025-05-27 19:35:40 · 287 阅读 · 0 评论 -
力扣HOT100之回溯:79. 单词搜索
上述代码超时的原因是合法的路径可能有多个,我们只需要找到一条就行,因此在向四周探索的时候,按照代码的逻辑,尽管已经找到了一条合法的路径,但是代码还是会继续向其他方向搜索,这就会导致超时,因此我们需要在找到路径时及时终止搜索。此外,在遍历四个方向时,一定要用引用的方式,否则赋值拷贝的过程也会增加耗时,最终导致超时。然后去看了下灵神的题解,感觉我的思路和他未优化过的版本思路是一样的,但是他的不会超时,我的会超时。,若当前位置的字符未被访问过,并与word[i]相等,且长度也已经达标了,匹配成功,返回。原创 2025-05-26 20:39:09 · 484 阅读 · 0 评论 -
力扣HOT100之回溯:22. 括号生成
的字符串,然后用递归函数遍历所有位置,判断每个位置填左括号还是右括号,当处理完所有位置时,就将结果添加到向量中,当然,每个位置上的左右括号并不是任意填的,无论填入左括号还是右括号,都需要满足一定的条件。,用于判断输入的括号字符是否是闭合的,这个用栈来实现很简单,对应的问题可以参考。,然后再进入下一层递归即可,当递归结束后,及时将字符串末尾的字符移除。这道题自己A的,我用的思路比较简单,我们额外定义一个辅助函数。我看了下灵神的题解,感觉他的思路挺好的,强烈建议看一下。个左括号,那么已填的右括号的数量为。原创 2025-05-26 16:54:19 · 459 阅读 · 0 评论