- 博客(516)
- 资源 (30)
- 收藏
- 关注
原创 广度优先搜索和深度优先搜索的概念
广度优先搜索和深度优先搜索在树的遍历中已经简单介绍过,树的遍历基于这两种搜索算法。广度优先搜索和深度优先搜索的适用场景是广义的无权图,包括实际的图,也包括树和矩阵。无向图和有向图都可以使用广度优先搜索和深度优先搜索。搜索过程中,需要记录图中每个顶点的访问状态,确保每个顶点最多被访问一次。
2026-04-02 18:00:00
344
原创 Tom 和 Jerry 的网格迷宫大冒险
本文讲述了猫鼠游戏五局迷宫对决的精彩故事。每局游戏采用不同大小的网格迷宫,双方拥有不同的跳跃能力,通过轮流动策略展开追逐。Jerry在前三局凭借灵活走位和长跳跃优势获胜,Tom则在第二、四局利用地形封锁和短距离追击取胜。第五局中,Jerry在Tom紧追不舍下险胜。全文通过生动的游戏场景和对话,展现了双方在迷宫中的智慧博弈,每局胜负取决于地形设计、初始位置选择和跳跃策略的巧妙运用。
2025-07-12 10:00:00
1021
原创 Tom 和 Jerry 的图论迷宫大冒险
《猫鼠游戏:拓扑迷宫中的智慧对决》讲述了Jerry和Tom在卡通小镇的6局拓扑地图追逐战。每局采用不同结点连接结构,双方轮流移动,通过最优策略争夺胜利。剧情展现了从5结点到10结点的复杂对抗:有Tom的快速捕获、Jerry的巧妙逃脱、平局循环以及因策略失误导致的局势逆转。游戏融合了力扣算法题目的逻辑设计与趣味场景,在奶酪店、花园、喷泉广场等特色地点展开智斗,最终以10结点迷宫作为决胜局,生动呈现了拓扑游戏中的策略博弈与路径计算。
2025-07-05 10:00:00
921
原创 数据结构和算法文章目录
文章目录算法 + 数据结构 = 程序数据结构概述常用数据结构高级数据结构算法概述数学算法 + 数据结构 = 程序Pascal 之父尼古拉斯·沃斯(Nicklaus Wirth)凭借一句话获得了图灵奖,让他获得图灵奖的是他提出的著名公式:算法 + 数据结构 = 程序。数据结构和算法是程序中的两个不同的概念,又有所联系。数据结构是数据的表示形式,算法是解决问题的流程,算法在程序中的体现是函数或方法。算法中经常用到数据结构,因此数据结构和算法之间存在密切的联系。数据结构概述数据结构虽然有多种类型,但是大
2021-06-08 19:03:27
315
原创 搜索题目:岛屿的最大面积
依次遍历矩阵中的每个元素,如果遇到一个元素是陆地且状态是未访问,则遇到一个新的岛屿,访问与当前陆地连接的所有陆地,即访问当前岛屿的所有元素,得到当前岛屿的面积。依次遍历矩阵中的每个元素,如果遇到一个元素是陆地且状态是未访问,则遇到一个新的岛屿,访问与当前陆地连接的所有陆地,即访问当前岛屿的所有元素,得到当前岛屿的面积。初始化之后,遍历每个元素,如果一个元素是陆地元素且其上边或左边的相邻元素是陆地元素,则将两个相邻陆地元素所在的集合做合并,同时将合并后的集合的面积更新为两个原始集合的面积之和。
2026-04-09 18:14:49
246
原创 搜索题目:甲板上的战舰
初始化之后,遍历每个元素,如果一个元素是战舰元素元素且其上边或左边的相邻元素是战舰元素元素,则将两个相邻战舰元素元素所在的集合做合并,每次合并之后将集合个数减。从一个战舰元素开始遍历整个战舰时,对于每个战舰元素,考虑与当前战舰元素在四个方向上相邻且未访问的战舰元素,可以创建方向数组实现四个方向的遍历。从一个战舰元素开始遍历整个战舰时,对于每个战舰元素,考虑与当前战舰元素在四个方向上相邻且未访问的战舰元素,可以创建方向数组实现四个方向的遍历。两艘战舰之间至少有一个水平或竖直的空位分隔(即没有相邻的战舰)。
2026-04-08 18:00:00
359
原创 搜索题目:岛屿数量
此处的解法为新建与网格相同大小的二维数组记录每个元素是否被访问过,也可以不新建二维数组,而是在网格上原地修改访问过的元素。此处的解法为新建与网格相同大小的二维数组记录每个元素是否被访问过,也可以不新建二维数组,而是在网格上原地修改访问过的元素。依次遍历网格中的每个元素,如果遇到一个元素是陆地且状态是未访问,则遇到一个新的岛屿,将岛屿数量加。初始化之后,遍历每个元素,如果一个元素是陆地元素且其上边或左边的相邻元素是陆地元素,则将两个相邻陆地元素所在的集合做合并,每次合并之后将集合个数减。
2026-04-07 18:00:00
351
原创 搜索题目:寻找图中是否存在路径
由于给定的图是双向图,每条边都是双向边,因此对于同一条边连接的两个顶点,可以从其中任意一个顶点到达另一个顶点。判断是否存在从顶点sourcesource到顶点的有效路径,等价于判断顶点sourcesource和顶点是否连通。连通性问题可以使用广度优先搜索或深度优先搜索解决,也可以使用并查集解决。
2026-04-06 18:00:00
354
原创 双指针题目:按字典序排在最后的子串
需要证明跳过的字符都不可能是字典序最大的子串的开始字符。为了降低时间复杂度,需要跳过不可能是字典序最大的子串,避免不必要的计算。,则其中较小的字符所在的子串一定不是字典序最大的子串,因此将该子串跳过,具体做法如下。中的子串开始下标确定时,子串的长度越大,其字典序越大,因此字符串。,当字典序相同时,长度越大的字符串的字典序越大,因此字符串。时跳过的下标都不可能是字典序最大的子串的开始下标。中的下标都不可能是字典序最大的子串的开始下标。中的下标都不可能是字典序最大的子串的开始下标。
2026-03-30 18:00:00
319
原创 双指针题目:删除最短的子数组使剩余数组有序
的子数组的方案使剩下的元素非递减,因此可以使用二分查找得到需要删除的最短子数组的长度。可以使用双指针的做法计算需要删除的最短子数组的长度。的方案使剩下的元素非递减,则需要删除的最短子数组的长度小于等于。此时不需要删除任何元素,需要删除的最短子数组的长度是。的方案使剩下的元素非递减,则需要删除的最短子数组的长度大于。的子数组的方案使剩下的元素非递减,则一定存在删除长度大于。不是非递减的数组,则将需要删除的最短子数组的长度初始化为。中删除最短的子数组,使剩下的元素非递减。更新需要删除的最短子数组的长度。
2026-03-26 18:00:00
347
原创 双指针题目:满足条件的子序列数目
这道题要求计算数组numsnums中满足最小值与最大值之和不超过targettarget的非空子序列的数目。当一个子序列的最小值与最大值确定时,在最小值与最大值之间的其余元素是否加入子序列不会影响子序列的最小值与最大值。如果最小值与最大值之间的其余元素有xxx个,则当前最小值与最大值确定的子序列个数是2x2^x2x,其中xxx不超过数组numsnums的长度。为了快速计算任意xxx对应的2x2^x2x,需要预计算从000到数组长度的每个整数对应的222的幂。
2026-03-23 18:00:00
391
原创 双指针题目:找出第 K 小的数对距离
一定不变或向右移动,不可能向左移动,因此双指针的做法是可行的。按升序排序,然后在升序数组上执行二分查找。,最大数对距离等于数组中的最大值与最小值之差。由于最大数对距离等于数组中的最大值与最小值之差,长度为。的时间使用双指针各遍历数组一次,因此二分查找的总时间是。的数对距离个数,可以使用双指针的做法计算不超过。的数对距离个数,与二分查找结合,即可得到第。的时间将数组排序,排序之后需要执行。的平均数向下取整,执行如下操作。固定为数对中的较大值时,不超过。固定为数对中的较大值时,不超过。
2026-03-19 18:00:00
379
原创 双指针题目:分割两个字符串得到回文串
根据题目要求,将字符串分割成的两个子串中可以有一个子串为空。中至少有一个是回文串,因此一定存在构成回文串的分割方案,返回。的子串是回文串的可能性更低。是回文串为例,上述做法的正确性证明如下。都不是回文串,则需要判断是否存在。是回文串时,需要判断是否存在下标。中至少有一个是回文串,则可以将。选择一个下标,将两个字符串都在。的长度,需要判断是否存在下标。不能得到回文串,则取分割下标。都是回文串,此时取分割下标。是回文串,则可以构成回文串。是回文串,那么答案一定为。的子串长度,因此下标范围。
2026-03-16 18:00:00
720
原创 双指针题目:区间子数组个数
分别表示符合要求的非空子数组的开始下标的最小值和最大值,则当子数组的开始下标位于范围。中的每个元素分别考虑以该元素结尾的符合要求的非空子数组的个数。遍历结束之后,即可得到符合要求的非空子数组的个数。,因此符合要求的非空子数组的开始下标需要移动到。中时,当前的符合要求的非空子数组的个数是。结尾的符合要求的非空子数组的个数是。结尾的符合要求的非空子数组的个数是。结尾的符合要求的非空子数组,更新。中的非空子数组个数,可以对数组。,则符合要求的非空子数组可以包含。,表示不存在符合要求的非空子数组。
2026-03-12 18:00:00
331
原创 双指针题目:将数组分成三个子数组的方案数
这道题要求计算将数组分成三个非空子数组且三个子数组的元素和单调递增(允许相等)的方案数。可能的方案数之后,即可得到将数组分成三个非空子数组且三个子数组的元素和单调递增的方案数。遍历结束之后,即可得到将数组分成三个非空子数组且三个子数组的元素和单调递增的方案数。的时间计算前缀和,使用双指针遍历前缀和数组一次,因此时间复杂度是。中的元素都是非负整数,因此可以使用二分查找的做法计算方案数。的末尾元素对应前缀和的最小值和最大值,则。的末尾元素对应前缀和的最小值和最大值。的时间计算前缀和,对于每个可能的。
2026-03-09 18:00:00
382
原创 双指针题目:神奇字符串
根据神奇字符串的生成规则,需要根据每个组的长度生成神奇字符串,因此可以使用双指针的做法生成神奇字符串。,快指针用于在神奇字符串末尾添加字符,慢指针用于遍历每个组的长度,初始时。的数目,做法是每次生成新的字符时,如果新生成的字符是数字。将神奇字符串按照相同连续字符分组,则满足每个组的长度都是。的情况下,可以按从左到右的顺序生成神奇字符串。,其余每个组的字符都和上个组的字符不同,长度由。的前几个字符,另一种方法是将当前组的数字填入。需要遍历神奇字符串的前。表示当前组的数字,初始时。神奇字符串的首个数字是。
2026-03-05 18:00:00
371
原创 双指针题目:推多米诺
每过一秒,倒向左边的多米诺骨牌会推动其左侧的相邻多米诺骨牌,倒向右边的多米诺骨牌会推动其右侧的相邻多米诺骨牌。中的所有字符对应的多米诺骨牌都被向左推动,因此将该下标范围中的所有字符更新为。中的所有字符对应的多米诺骨牌都被向右推动,因此将该下标范围中的所有字符更新为。中的所有字符对应的多米诺骨牌都被向右推动,因此将该下标范围中的所有字符更新为。中的所有字符对应的多米诺骨牌都不会被推动,因此该下标范围中的所有字符不变。,则中间的所有字符对应的多米诺骨牌都不会被推动,因此最终状态不变,都是。
2026-03-02 18:00:00
636
原创 双指针题目:供暖器
为了使供暖器可以覆盖所有房屋,且供暖器的加热半径最小,应确保每个房屋能被离该房屋最近的供暖器覆盖到。当供暖器的加热半径不小于任何一个房屋与最近的供暖器的距离时,供暖器可以覆盖所有房屋,因此对每个房屋分别计算该房屋与最近的供暖器的距离,这些距离中的最大值为最小加热半径。因此可以使用双指针的做法得到每个房屋与最近的供暖器的距离,以及最小加热半径。,分别考虑其两侧的供暖器中离该房屋最近的供暖器,将左侧和右侧的最近的供暖器在。中的所有房屋并计算与最近的供暖器之后,即可得到最小加热半径。如果我们将加热半径设为。
2026-02-26 18:00:00
1486
原创 双指针题目:三数之和的多种可能
由于数组已经按升序排序,因此重复元素在数组中的相邻位置,可以通过比较相邻位置的元素寻找重复元素,实现去重。为了实现统计三元组数量,需要使用哈希表记录每个元素的出现次数,并对三元组去重。由于数组已经按升序排序,因此可以使用双指针的做法寻找所有符合要求的下标对。组成的三元组一定会和已经遍历过的三元组重复,应跳过元素值重复的下标。的目标值固定,问题转化成寻找使得三元组的元素之和等于。得到每个三元组的数量之后,即可得到数组中的元素和等于。的时间,排序之后,遍历三元组的第一个元素需要。每次找到元素之和等于。
2026-02-23 18:00:00
625
原创 情人节乐园里的“单一异常值”
情人节当天,单身程序员程砚误入情侣主题乐园,因“单一元素”身份被处处刁难,却意外结识同样落单的女生苏码。两人以 LeetCode 算法题“有序数组中的单一元素”为话题展开交流,从躲避乐园“爱情巡检队”的追查到共同破解“单身困境”,最终发现彼此才是最适合的“最优解”。一年后,他们以情侣身份重返乐园,完成了从“独立异常值”到“完美成对元素”的蜕变。故事以算法为隐喻,展现了爱情中独一无二的相遇与成长。
2026-02-14 08:00:00
1052
原创 双指针题目:下一个排列
如果它对应的可能是你的朋友的名字(其中一些字符可能被长按),返回。的剩余字符都是长按键入的字符并遍历结束,返回。时结束遍历,此时至少有一个下标超出下标范围。时,按键可能会被长按,而字符可能被输入。结束遍历时,可能有两种情况,处理方法如下。的剩余字符中存在非长按键入的字符,返回。可能是长按键入的字符,执行如下操作。中的上一组长按键入的字符被跳过。的剩余字符都是长按键入的字符时,才可能是长按键入的字符。中的上一组长按键入的字符之后,,即两个字符串都遍历结束。中的字符仍无法对应,返回。你检查键盘输入的字符。
2026-02-13 07:25:08
923
原创 双指针题目:长按键入
如果不存在下一个更大的排列,那么这个数组必须重排为字典序最小的排列(即,其元素按升序排列)。更正式的表述是,如果数组的所有排列根据其字典序从小到大排列在一个容器中,那么数组的。到末尾的子数组保持单调递减,将该子数组反转之后得到单调递增的子数组,符合下一个排列的规则。不存在更大的排列,下一个排列是将整个数组反转之后的结果。单调递减,此时将整个数组反转得到单调递增的数组,即为下一个更大的排列。右侧的全部元素按升序排序,即可得到下一个更大的排列。替换成下一个更大的元素,符合下一个排列的规则。
2026-02-13 07:23:49
905
原创 双指针题目:压缩字符串
使用快指针遍历数组,遍历的条件是快指针指向的下标小于等于数组的长度。为了实现字符串的压缩,遍历过程中需要记录当前组的字符数以及维护字符数的数字表示长度。,即当前字符与上一个字符相同,则当前字符与上一个字符在同一个组,执行如下操作。指向的下标等于数组的长度,则不会有更多的字符,因此也可以得到正确的结果。根据题目描述的压缩过程,可以使用双指针实现字符串的压缩。,则上一个字符是上一个组的末尾字符,执行如下操作。表示组的长度,考虑压缩前后的长度变化。指向的下标为新的一组的开始。,因为只有一个字符,所以不压缩。
2026-02-12 18:00:00
2110
原创 双指针题目:区间列表的交集
如果一个下标超出区间列表的下标范围,则该下标所在的区间列表中的所有区间都已经被遍历过,因此不可能有更多的非空交集,此时得到完整的交集。由于给定的两个区间列表满足同一个区间列表中的区间各不相交且已经按升序排序,因此不需要处理区间合并,只需要从左到右同时遍历两个区间列表即可计算交集。都未超出区间列表的下标范围时,同时遍历两个区间列表,记。,将末端较小的区间对应的下标向右移动一位。都不可能和两个区间列表中的其余区间有交集,因此将。使用一个列表存储区间列表的交集。的交集为空,不添加到交集列表中。
2026-02-09 18:00:00
991
原创 双指针题目:适龄的朋友
为了计算好友请求总数,需要考虑发送好友请求的条件。题目给出了三个不发送好友请求的条件,当这三个条件都不成立时,将会发送好友请求。排序,然后使用二分查找得到每个用户会发送好友请求的用户的年龄范围,计算好友请求总数。由于每个用户会发送好友请求的用户的年龄在特定范围中,因此可以将数组。中的年龄范围有限,因此可以使用计数排序的方式计算好友请求总数。分别表示当前用户会发送好友请求的用户的下标范围,初始时。,将该年龄的用户会发送好友请求的用户的年龄范围记为。覆盖了当前用户会发送好友请求的所有年龄。
2026-02-05 18:00:00
1529
原创 双指针题目:有效三角形的个数
则首先将数组按升序排序,然后在升序数组中计算可以组成三角形三条边的三元组个数。中至少存在三个元素时,才可能找到可以组成三角形三条边的三元组。的元素中计算可以组成三角形三条边的三元组个数。且任意两条边的长度之和大于第三条边的长度,因此三元组。的元素中寻找可以组成三角形三条边的三元组。之后,即可计算可以组成三角形三条边的三元组个数。可以组成三角形的三条边,因此对于当前的下标组。,则当前三元组不能组成三角形的三条边,因此将。,返回其中可以组成三角形三条边的三元组个数。对应的可以组成三角形三条边的三元组不存在。
2026-02-02 18:00:00
822
原创 双指针题目:复写零
上述复写零的过程中,需要对原数组和新数组分别维护遍历到的下标,两个数组的下标以不同的速度移动,原数组的下标每次移动一位,新数组的下标每次移动一位或两位。因此复写零的过程可以通过双指针实现,原数组的下标对应慢指针,新数组的下标对应快指针。由于原数组中的每个零都复写,其余元素都不复写,因此新数组的长度至少为。如果在正向遍历数组的过程中复写零,则复写的零会覆盖尚未遍历的元素,因此需要在反向遍历数组的过程中复写零。,慢指针用于遍历数组,快指针用于将复写零之后的结果填入结果数组,初始时两个指针都指向下标。
2026-01-29 18:00:00
1576
原创 双指针题目:删除有序数组中的重复项 II
快指针遍历数组的过程中,需要判断当前元素是否为重复元素,如果不是重复元素则填入结果数组,否则跳过当前元素,具体做法如下。这道题要求删除数组中重复出现的元素,使每个元素最多出现两次。,则当前元素与前两个元素存在不同,保留当前元素不会导致同一个元素出现超过两次,因此将。删除重复元素并将不同元素填入结果数组,可以使用双指针实现。的元素为数组中删除重复项后的所有元素,结果数组有。,则当前元素与前两个元素都相同,因此跳过当前元素。,删除数组中重复出现的元素,使每个元素最多出现。,原地删除重复出现的元素,使每个元素。
2026-01-26 18:00:00
1222
原创 双指针题目:煎饼排序
煎饼排序的原理是每次翻转数组的一个前缀,达到将数组排序的目的。对于给定长度的数组寻找最短操作序列的问题已经被证明是 NP 困难的,感兴趣的读者可以阅读论文「
2026-01-22 18:00:00
1131
原创 双指针题目:数组中的 k 个最强值
空间复杂度主要取决于排序的递归调用栈空间。的值一定是剩余元素中的两端的元素之一。是一个有序整数列表中处于中间位置的值。形式上,如果列表的长度为。分别表示两个指针指向的下标,初始时。的时间,排序之后需要使用双指针遍历。的值一定是数组两端的元素之一,即。,按从强到弱顺序排序后,数组变为。,按从强到弱顺序排序后,数组变为。,按从强到弱顺序排序后,数组变为。的距离,并调整指针指向的下标。的值之后,剩余元素中最远离。标题:数组中的 k 个最强值。的中位数,需要首先对数组。的任何排列都是正确答案。
2026-01-19 18:00:00
1091
原创 双指针题目:找到 K 个最接近的元素
如果其中一个指针指向的下标越界,则将另一个指针继续移动。的整数一定是剩余元素中的两端的元素之一。中有一个指针指向的下标越界,则另一个指针指向的下标处的元素是数组。是给定的参数,表示待寻找的最接近目标值的元素个数。个整数,依次将这些元素填入结果,则结果满足按升序排序。个整数,依次将这些元素填入结果,则结果满足按升序排序。的整数一定是数组两端的元素之一,即。分别表示两个指针指向的下标,初始时。分别表示两个指针指向的下标,初始时。的大小关系,调整查找的下标范围。的距离,并调整指针指向的下标。
2026-01-15 18:00:00
1189
原创 双指针题目:四数之和
由于题目要求结果中不可以包含重复的四元组,因此得到所有四元组之后还需要做去重,总时间复杂度还会更高。由于数组已经按升序排序,因此重复元素在数组中的相邻位置,可以通过比较相邻位置的元素寻找重复元素,实现去重。由于数组已经按升序排序,因此可以使用双指针的做法寻找所有符合要求的下标对。组成的四元组一定会和已经遍历过的四元组重复,应跳过元素值重复的下标。的情况已经遍历过,因此四元组的第一个数位于下标。的情况已经遍历过,因此四元组的第二个数位于下标。的时间,排序之后,遍历四元组的前两个元素需要。
2026-01-12 18:00:00
663
原创 双指针题目:最接近的三数之和
由于数组已经按升序排序,因此重复元素在数组中的相邻位置,可以通过比较相邻位置的元素寻找重复元素,实现去重。的三元组的元素之和。组成的三元组一定会和已经遍历过的三元组重复,应跳过元素值重复的下标。时一定会和已经遍历过的三元组重复,应跳过当前下标。的情况已经遍历过,因此三元组的第一个数位于下标。的时间,排序之后,遍历三元组的第一个元素需要。的时间,使用双指针遍历三元组的后两个元素需要。在升序数组中,三元组的元素之和的最小值是。,则任意一个三元组的元素之和都不会比。的三元组,该三元组的元素之和最接近。
2026-01-08 18:00:00
1595
原创 双指针题目:三数之和
由于题目要求结果中不可以包含重复的三元组,因此得到所有三元组之后还需要做去重,总时间复杂度还会更高。由于数组已经按升序排序,因此重复元素在数组中的相邻位置,可以通过比较相邻位置的元素寻找重复元素,实现去重。由于数组已经按升序排序,因此可以使用双指针的做法寻找所有符合要求的下标对。组成的三元组一定会和已经遍历过的三元组重复,应跳过元素值重复的下标。的目标值固定,问题转化成寻找使得三元组的元素之和等于。的时间,排序之后,遍历三元组的第一个元素需要。的时间,使用双指针遍历三元组的后两个元素需要。
2026-01-05 18:00:00
1024
原创 双指针题目:K 和数对的最大数目
由于每一步操作必须移除数组中的两个整数,不能将同一个整数移除两次(移除的两个整数可以相等但是下标必须不同),因此为了避免在。空间复杂度主要取决于哈希表,哈希表中的元素个数不超过。将数组排序之后,可以使用双指针计算数组中的元素之和等于。遍历数组一次,每个元素的计算时间都是常数。的时间,使用双指针遍历数组计算最大操作数需要。时,两个指针指向同一个元素,因此不存在两个。,结束上述操作,此时即可得到最大操作数。的大小关系,调整指针指向的下标。的元素对数目,即最大操作数。,这两个元素都被移除,因此将。
2025-12-31 18:00:00
1548
原创 双指针题目:盛最多水的容器
为了使容器可以容纳的水量最大化,应使新容器的高度可能比原容器的高度增加。当选定两条垂线以后,容器可以容纳的水量等于容器的宽度与高度的乘积,宽度等于两条垂线的下标差,高度等于两条垂线中较短的垂线的长度。向左移动皆可,移动任何一个下标之后,新容器的高度一定不超过原容器的高度,因此新容器可以容纳的水量一定减少。向右移动之后,对于任何一个排除的下标对,其所对应的容器可以容纳的水量一定不是最大水量。向左移动之后,对于任何一个排除的下标对,其所对应的容器可以容纳的水量一定不是最大水量。
2025-12-29 08:00:00
643
原创 双指针题目:判断子序列
动态规划是求解决策过程最优化的过程,其核心思想是将待求解问题分解成若干个子问题,先求解子问题,然后从这些子问题的解得到原问题的解。动态规划适用于存在重叠子问题的情况,当一个子问题被解决时,将该子问题的答案记录在表格中,下次遇到相同子问题时不需要重复计算,而是可以直接从表格中得到该子问题的答案,从而实现降低时间复杂度的目的。首先需要定义状态的含义,然后直接得到边界情况中的每个状态的结果,最后使用状态转移方程计算所有状态的结果。中的尚未匹配的字符中的最近相同字符匹配,该做法是最优的,理由如下。
2025-12-25 18:00:00
1496
原创 双指针题目:两数之和 IV - 输入二叉搜索树
解法三虽然利用了二叉搜索树的性质,但是做法是首先得到中序遍历序列,然后在中序遍历序列上使用双指针的做法判断是否存在两个结点的结点值之和等于目标值,中序遍历序列需要。分别为二叉搜索树中的最左侧结点和最右侧结点,可以模拟正向中序遍历操作和反向中序遍历操作,使用双指针判断是否存在两个结点的结点值之和等于目标值。得到二叉搜索树的中序遍历序列之后,可以使用二分查找或双指针的做法判断是否存在两个结点的结点值之和等于目标值,其中双指针的做法时间复杂度更低。利用二叉搜索树的性质,可以使用二叉搜索树的中序遍历寻找结点值。
2025-12-22 18:00:00
643
原创 双指针题目:两个数组的交集 II
分别在两个数组的下标范围中时,重复上述操作,直到至少有一个下标超出数组的下标范围,此时不存在更多的同时在两个数组中出现的元素,可以得到交集的全部元素。实现方面,为了降低空间复杂度,可以首先遍历较短的数组并使用哈希表记录较短的数组中每个元素的出现次数,然后遍历较长的数组计算交集。首先将两个数组升序排序,排序之后的数组满足相等的元素在数组中的相邻位置,因此可以计算每个元素在两个数组中同时出现的次数。,返回两个数组的交集。,则当前元素在两个数组中都出现,因此在两个数组的交集内,将当前元素添加到结果中,将。
2025-12-18 18:00:00
1440
算法导论英语版
2014-07-14
Neural Networks—Tricks of the Trade (2nd Edition).pdf
2019-08-22
数据结构与Java算法第四版
2013-11-21
Foundations of Statistical Natural Language Processing
2017-03-08
语言与机器:计算机科学理论介绍
2013-11-21
Statistical Decision Theory and Bayesian Analysis (2nd Edition)
2017-03-08
概率与计算
2014-03-06
C程序设计语言(第二版)
2017-03-12
神经网络与深度学习
2018-10-14
Deep Learning (Ian Goodfellow, Yoshua Bengio, Aaron Courville)
2017-03-08
Deep Learning (Yoshua Bengio, Ian Goodfellow, Aaron Courville, October 03, 2015)
2015-10-08
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅