
leetcode
文章平均质量分 65
Mr_Richard
这个作者很懒,什么都没留下…
展开
-
Leetcode 208. 实现 Trie (前缀树)
是一种树形数据结构,用于高效地存储和检索字符串数据集中的键。这一数据结构有相当多的应用情景,例如自动补完和拼写检查。内的字母构成,其中“相邻”单元格是那些水平相邻或垂直相邻的单元格。同一个单元格内的字母在一个单词中不允许被重复使用。找到board矩阵中出现在字典树中的字符串,用HashSet收集。根据前缀树的概念实现,查找和加入类似于二叉搜索树。(发音类似 “try”)或者说。和一个单词(字符串)列表。单词必须按照字母顺序,通过。返回所有二维网格上的单词。构造字典树,然后通过。原创 2024-07-28 19:49:07 · 479 阅读 · 0 评论 -
Leetcode 909.蛇梯棋
的编号范围,遇到蛇和梯子(在board矩阵中对应值不为-1)可以进行跳转,但不能连续跳,求到达终点的最少步数。注意,玩家在每回合的前进过程中最多只能爬过蛇或梯子一次:就算目的地是另一条蛇或梯子的起点,玩家也。列的棋盘,按前述方法编号,棋盘格中可能存在 “蛇” 或 “梯子”;的编号范围,如果未越界且未曾访问过,则入队。时,返回当前的步长;如果无法返回到终点,返回-1。入队后进行BFS,逐个字符尝试修改,当新的字符串在。的方格所需的最少移动次数,如果不可能,则返回。中且未尝试过,加入到队列中,直到生成了。原创 2024-07-28 19:48:29 · 617 阅读 · 0 评论 -
Leetcode 427. 建立四叉树
你不需要阅读本节来解决这个问题。只有当你想了解输出格式时才会这样做。输出为使用层序遍历后四叉树的序列化形式,其中。四叉树数据结构中,每个内部节点只有四个子节点。它与二叉树的序列化非常相似。唯一的区别是节点以列表形式表示。如果你想了解更多关于四叉树的内容,可以参考。的值为 True ,则表示它在列表。表示路径终止符,其下面不存在节点。的值为 False ,则表示值为。请你用四叉树表示该矩阵。的 四叉树 的根结点。你需要返回能表示矩阵。原创 2024-07-21 13:16:54 · 704 阅读 · 0 评论 -
Leetcode 23. 合并 K 个升序链表
在合并两个有序链表的基础上,使用辅助队列,两两进行合并。请你将所有链表合并到一个升序链表中,返回合并后的链表。给你一个链表数组,每个链表都已经按升序排列。原创 2024-07-21 13:12:11 · 294 阅读 · 0 评论 -
Leetcode 399. 除法求值
*注意:**输入总是有效的。你可以假设除法运算中不会出现除数为 0 的情况,且不存在任何矛盾的结果。如果问题中出现了给定的已知条件中没有出现的字符串,也需要用。**注意:**未在等式列表中出现的变量是未定义的,因此无法确定它们的答案。如果存在某个无法确定的答案,则用。个问题,请你根据已知条件找出。思路:使用带权重的并查集进行求解。是一个表示单个变量的字符串。应使用带权重的并查集实现。转载 2024-07-21 13:09:35 · 60 阅读 · 0 评论 -
Leetcode 210. 课程表 II
返回你为了学完所有课程所安排的学习顺序。可能会有多个正确的顺序,你只要返回。如果不可能完成所有课程,返回。原创 2024-07-21 13:04:00 · 300 阅读 · 1 评论 -
Leetcode 133. 克隆图
是用于表示有限图的无序列表的集合。每个列表都描述了图中节点的邻居集。简单起见,每个节点的值都和它的索引相同。例如,第一个节点值为 1(给定节点将始终是图中的第一个节点(值为 1)。生成拷贝节点后如何按原连通图的关系将拷贝节点关联起来。该图在测试用例中使用邻接列表表示。图中一个节点的引用,请你返回该图的。图中的每个节点都包含它的值。作为对克隆图的引用返回。),第二个节点值为 2() 和其邻居的列表(原创 2024-07-21 12:52:45 · 297 阅读 · 0 评论 -
Leetcode 236. 二叉树的最近公共祖先
中最近公共祖先的定义为:“对于有根树 T 的两个节点 p、q,最近公共祖先表示为一个节点 x,满足 x 是 p、q 的祖先且 x 的深度尽可能大(在递归过程中,空节点视为0,对于每个节点,计算其左右子树的最大路径和(如果为负数则视作0),然后更新全局变量。,记录可能的最大路径和,最后返回以当前节点为根的子树中包含当前节点的最大路径和。(最近最少使用)算法,最近最少访问的key放在队头,最新访问的key放在队尾。如果有环,第一个遇到的访问过的节点即为入环的第一个节点;的第一个元素的和,这些是最小的数对之一。原创 2024-07-14 16:15:41 · 936 阅读 · 1 评论 -
Leetcode 295.数据流的中位数
任意多个连续的斜杠(即,设置辅助栈,栈中元素为长度为2的数组,分别存当前插入的val值和它插入后栈中的最小val值。如果列表的大小是偶数,则没有中间值,中位数是两个中间值的平均值。回溯暴力解,给回溯函数设置返回值,当找到一个可行解时,停止计算,返回结果。取出最小元素:从栈顶元素获取当前栈中的最小val值;操作,并能在常数时间内检索到最小元素的栈。开头),请你将其转化为更加简洁的规范路径。没想到字符串切片,纯指针实现切片,代码臃肿。对于此问题,任何其他格式的点(例如,在 Unix 风格的文件系统中,一个点(原创 2024-07-08 22:58:13 · 952 阅读 · 0 评论 -
罗马数字与十进制互转
数字 1 在数字 5 的左边,所表示的数等于大数 5 减小数 1 得到的数值 4。罗马数字是通过添加从最高到最低的小数位值的转换而形成的。通常情况下,罗马数字中小的数字在大的数字的右边。但也存在特例,例如 4 不写做。思路:每次从大到小试探所有罗马数字去做减法。给定一个罗马数字,将其转换成整数。给定一个整数,将其转换为罗马数字。**输入:**num = 3749。**输入:**num = 1994。思路:匹配所以可能的罗马数字组合。**输入:**num = 58。,即为两个并列的 1。原创 2024-06-30 19:03:25 · 330 阅读 · 0 评论 -
968. 监控二叉树
贪心策略:尽可能减少摄像头放置,不用从叶子节点开始放,间隔放置。给定一个二叉树,我们在树的节点上安装摄像头。计算监控树的所有节点所需的最小摄像头数量。节点上的每个摄影头都可以监视。原创 2024-06-15 20:40:34 · 268 阅读 · 0 评论 -
738. 单调递增的数字
当且仅当每个相邻位数上的数字。的最大数字,且数字呈。时,我们称这个整数是。原创 2024-06-15 20:37:34 · 402 阅读 · 0 评论 -
贪心-区间问题
将问题转化为求非交叉区间数量的问题(非交叉区间,如[1,3],[2,4]算1个非交叉区间,如[1,2],[3,4]算2个非交叉区间)我们要把这个字符串划分为尽可能多的片段,同一字母最多出现在一个片段中。注意,划分结果需要满足:将所有划分结果按顺序连接,得到的字符串仍然是。按开始下标升序排序,然后遍历数组,相邻的两个区间能合并则进行合并;处射出一支箭,若有一个气球的直径的开始和结束坐标为。一个不重叠的区间数组,该数组需恰好覆盖输入中的所有区间。返回一个表示每个字符串片段的长度的列表。原创 2024-06-15 20:34:11 · 892 阅读 · 0 评论 -
134. 加油站
如果你可以按顺序绕环路行驶一周,则返回出发时加油站的编号,否则返回。你从其中的一个加油站出发,开始时油箱为空。你有一辆油箱容量无限的的汽车,从第。个加油站需要消耗汽油。原创 2024-06-15 20:18:00 · 340 阅读 · 0 评论 -
2813. 子序列最大优雅度
*注意:**数组的子序列是经由原数组删除一些元素(可能不删除)而产生的新数组,且删除不改变其余元素相对顺序。考虑第 k+1个项目,如果要选它,我们必须从前 k 个项目中移除一个项目。由于已经按照利润从大到小排序,选这个项目不会让。是所选子序列所含的所有类别中不同类别的数量。按照利润从大到小排序。先把前 k 个项目选上。是子序列中所有项目的利润总和,变大,所以重点考虑能否让。的子序列的最大优雅度。个项目的利润和类别。用整数形式表示并返回。转载 2024-06-13 12:22:29 · 113 阅读 · 0 评论 -
动态规划——字符串序列
Sk 其中 k >= 10亿,你需要依次检查它们是否为 T 的子序列。是指这样一个新的字符串:它是由原字符串在不改变字符的相对顺序的情况下删除某些字符(也可以不删除任何字符)后组成的新字符串。字符串的一个子序列是原始字符串删除一些(也可以不删除)字符而不改变剩余字符相对位置形成的新字符串。是由数组派生而来的序列,删除(或不删除)数组中的元素而不改变其余元素的顺序。可以删除任意一个字符串中的一个字符。是这两个字符串所共同拥有的子序列。、长度最长的子数组的长度。,返回这两个字符串的最长。原创 2024-06-12 21:30:38 · 846 阅读 · 0 评论 -
动态规划——买卖股票的最佳时机
*注意:**你不能同时参与多笔交易(你必须在再次购买前出售掉之前的股票)。**注意:**你不能同时参与多笔交易(你必须在再次购买前出售掉之前的股票)。返回你可以从这笔交易中获取的最大利润。如果你不能获取任何利润,返回。在每一天,你可以决定是否购买和/或出售股票。设计一个算法来计算你所能获取的最大利润。设计一个算法来计算你所能获取的最大利润。设计一个算法来计算你所能获取的最大利润。也就是说,你最多可以买。你也可以先购买,然后在。个元素是一支给定的股票在第。是某支给定的股票在第。给定一个数组,它的第。原创 2024-06-05 17:07:21 · 705 阅读 · 1 评论 -
动态规划——打家劫舍问题
如果偷第i房间,那么dp[i] = dp[i - 2] + nums[i] ,即:第i-1房一定是不考虑的,找出 下标i-2(包括i-2)以内的房屋,最多可以偷窃的金额为dp[i-2] 加上第i房间偷到的钱。你是一个专业的小偷,计划偷窃沿街的房屋。每间房内都藏有一定的现金,影响你偷窃的唯一制约因素就是相邻的房屋装有相互连通的防盗系统,你是一个专业的小偷,计划偷窃沿街的房屋,每间房内都藏有一定的现金。如果不偷第i房间,那么dp[i] = dp[i - 1],即考 虑i-1房,(,今晚能够偷窃到的最高金额。原创 2024-06-04 12:39:38 · 1148 阅读 · 0 评论 -
685. 冗余连接 II
该树只有一个根节点,所有其他节点都是该根节点的后继。该树除了根节点之外的每一个节点都有且只有一个父节点,而根节点没有父节点。若有多个答案,返回最后出现在给定二维数组的答案。中的两个不同顶点间,这条附加的边不属于树中已存在的边。)的树及一条附加的有向边构成。返回一条能删除的边,使得剩下的图是有。在本问题中,有根树指满足以下条件的。输入一个有向图,该图由一个有着。结果图是一个以边组成的二维数组。个节点(节点值不重复,从。原创 2024-05-22 20:49:52 · 643 阅读 · 0 评论 -
827. 最大人工岛
一次遍历地图,得出各个岛屿的面积,并做编号记录。可以使用map记录,key为坐标点,value为岛屿面积和岛屿编号。再次遍历地图,遍历0的方格(因为要将0变成1),并统计该1(由0变成的1)周边岛屿面积,将其相邻面积相加在一起(),遍历所有 0 之后,就可以得出 选一个0变成1 之后的最大面积。由一组上、下、左、右四个方向相连的。中最大的岛屿面积是多少?原创 2024-05-22 20:43:21 · 332 阅读 · 0 评论 -
417. 太平洋大西洋水流问题
从太平洋边上的节点 逆流而上,将遍历过的节点都标记上。从大西洋的边上节点 逆流而长,将遍历过的节点也标记上。然后两方都标记过的节点就是既可以流太平洋也可以流大西洋的节点。当前单元格的高度,雨水可以直接向北、南、东、西流向相邻单元格。水可以从海洋附近的任何单元格流入海洋。这个岛被分割成一个由若干方形单元格组成的网格。岛上雨水较多,如果相邻单元格的高度。处于大陆的左边界和上边界,而。处于大陆的右边界和下边界。直接每个点DFS部分用例超时。原创 2024-05-22 20:39:58 · 431 阅读 · 0 评论 -
377. 组合总和 Ⅳ
这里的num,nums数组中的各个元素都有可能。所以递推方程,j需要满足。题目数据保证答案符合 32 位整数范围。,爬 0 个台阶的方案数是 1。,防止下标越界),此时方案数为。原创 2024-04-22 09:58:28 · 487 阅读 · 0 评论 -
回溯算法-组合问题
给出数字到字母的映射如下(与电话按键相同)。注意 1 不对应任何字母。该列表不能包含相同的组合两次,组合可以以任何顺序返回。如果至少一个数字的被选数量不同,则两种组合是不同的。的字符串,返回所有它能表示的字母组合。需要设置变量记录当前path列表中的元素和。**注意:**解集不能包含重复的组合。中的每个数字在每个组合中只能使用。,并以列表形式返回。中可以使数字和为目标数。对于给定的输入,保证和为。给定一个候选人编号的集合。中所有可以使数字和为。所有可能的有效组合的列表。原创 2024-04-21 13:06:57 · 779 阅读 · 0 评论 -
2007. 从双倍数组中还原原数组
一个整数数组original可以转变成一个数组changed,转变方式为将original中每个元素加入数组中,然后将所有元素。给你一个数组changed,如果change是数组,那么请你返回original数组,否则请返回空数组。original的元素可以以顺序返回。原创 2024-04-18 10:11:09 · 513 阅读 · 0 评论 -
单调栈基础题
是按数组遍历顺序,这个数字之后的第一个比它更大的数,这意味着你应该循环地搜索它的下一个更大的数。个非负整数,用来表示柱状图中各个柱子的高度。每个柱子彼此相邻,且宽度为 1。天,下一个更高温度出现在几天后。如果气温在这之后都不会升高,请在该位置用。的柱子的高度图,计算按此排列的柱子,下雨之后能接多少雨水。如果不存在下一个更大元素,那么本次查询的答案是。求在该柱状图中,能够勾勒出来的矩形的最大面积。,表示每天的温度,返回一个数组。循环数组可以用%运算来降低难度。个非负整数表示每个宽度为。原创 2024-04-14 18:51:11 · 701 阅读 · 0 评论 -
2009. 使数组连续的最少操作数
nums数组去重升序排序后,设调整后的数组为newNums,在[newNums[0], newNums[0]+n-1](n为nums数组长度)范围内的元素是不需要调整的,设这个范围内的元素个数为k,则调整次数为n-k。但枚举每个可能的元素作为调整后的数组元素起始值,这种暴力破解会超时,所以还需要使用滑动窗口。暴力破解,枚举每个可能的元素作为调整后的数组元素起始值,超时。每一次操作中,你可以将。满足以下条件,那么它是。原创 2024-04-14 17:23:24 · 368 阅读 · 0 评论 -
3107. 使数组中位数等于 K 的最少操作数
一个数组的中位数指的是数组按非递减顺序排序后最中间的元素。如果数组长度为偶数,我们选择中间两个数的较大值为中位数。**输入:**nums = [1,2,3,4,5,6], k = 4。**输入:**nums = [2,5,6,8,5], k = 4。**输入:**nums = [2,5,6,8,5], k = 7。一次操作中,你可以选择任一元素 加。**解释:**数组中位数已经等于。现在数组的中位数等于。增加 1 两次,并且将。增加 1 一次,得到。**解释:**我们将。**解释:**我们将。原创 2024-04-14 16:46:22 · 370 阅读 · 0 评论 -
239. 滑动窗口最大值
使用单调队列来记录当前窗口内滑动窗口的最大值的下标,而非记录当前窗口内滑动窗口的最大值。的滑动窗口从数组的最左侧移动到数组的最右侧。你只可以看到在滑动窗口内的。使用单调队列来记录当前窗口内滑动窗口的最大值的下标,以方便查找。滑动窗口每次只向右移动一位。原创 2024-04-14 16:34:04 · 213 阅读 · 0 评论 -
leetcode 不同路径
机器人每次只能向下或者向右移动一步。机器人试图达到网格的右下角(在下图中标记为 “Finish” )。机器人每次只能向下或者向右移动一步。机器人试图达到网格的右下角(在下图中标记为 “Finish”)。现在考虑网格中有障碍物。那么从左上角到右下角将会有多少条不同的路径?网格的左上角 (起始点在下图中标记为 “Start” )。网格的左上角 (起始点在下图中标记为 “Start” )。网格中的障碍物和空位置分别用。问总共有多少条不同的路径?原创 2024-03-31 17:55:38 · 499 阅读 · 1 评论 -
100266. 交替子数组计数
给你一个二进制数组nums。如果一个子数组中 不存在 两个 相邻 元素的值 相同 的情况,我们称这样的子数组为交替子数组。要求返回数组 nums 中交替子数组的数量。示例 1:输入: nums = [0,1,1,1]输出: 5解释:以下子数组是交替子数组:[0] 、[1] 、[1] 、[1] 以及 [0,1]。示例 2:输入: nums = [1,0,1,0]输出: 10解释:数组的每个子数组都是交替子数组。可以统计在内的子数组共有 10 个。原创 2024-03-31 17:20:59 · 314 阅读 · 0 评论 -
链表基础题
给你一个链表,两两交换其中相邻的节点,并返回交换后链表的头节点。你必须在不修改节点内部的值的情况下完成本题(即,只能进行节点交换)。为了表示给定链表中的环,评测系统内部使用整数。为了表示给定链表中的环,评测系统内部使用整数。**进阶:**链表可以选用迭代或递归方式完成反转。来表示链表尾连接到链表中的位置(索引从 0 开始)。,请反转链表,并返回反转后的链表的头节点。**进阶:**你能尝试使用一趟扫描实现吗?,返回链表开始入环的第一个节点。给你一个链表,删除链表的倒数第。**进阶:**你是否可以使用。原创 2024-03-30 14:33:56 · 704 阅读 · 0 评论 -
2834. 找出美丽数组的最小和
n和target。如果数组nums满足下述条件,则称其为。nums[0, n-1]ij返回符合条件的美丽数组所可能具备的和,并对结果进行取模109 + 7。原创 2024-03-09 13:02:54 · 412 阅读 · 0 评论 -
Leetcode 542. 01 矩阵
取20000(最长距离:m+n-1=19999<20000)。,请输出一个大小相同的矩阵,其中每一个格子是。表示(i,j)到0的最短距离,即为所求。中对应位置元素到最近的。两个相邻元素间的距离为。原创 2023-10-31 13:02:29 · 998 阅读 · 0 评论 -
Leetcode 665. 非递减数列
我们是这样定义一个非递减数列的: 对于数组中任意的。个元素的情况下,该数组能否变成一个非递减数列。原创 2023-10-27 11:50:17 · 266 阅读 · 0 评论 -
Leetcode 413. 等差数列划分
数学规律:在本题中,长度为n的等差数列会比长度为n-1的等差数列的子数组个数多n-2个(1…n),即有 f(n) = f(n-1) + n-2; 状态转移方程: dp[i] = dp[i-1] + i-2。动态规划:求解长度为n(n>=3)的等差数列所拥有的子数组的个数; 边界条件:dp[1] = 0, dp[2] = 3。,并且任意两个相邻元素之差相同,则称该数列为等差数列。滑动窗口:求给定数组是否存在长度大于等于3的等差数列。是数组中的一个连续序列。原创 2023-10-27 11:47:31 · 180 阅读 · 0 评论 -
LT_2527. 查询数组 Xor 美丽值
给你一个下标从开始的整数数组nums。三个下标ij和k的定义为。一个数组的是数组中所有满足(i, j, k)的的异或结果。请你返回nums的 xor 美丽值。原创 2023-09-25 11:29:47 · 201 阅读 · 0 评论 -
LeetCode 2296.设计一个文本编辑器
比较暴力的解法,使用StringBuilder来模拟字符串的变化,完全数学化去理解,但性能会差一些,在题解区看到了有人提到了对顶栈。看了几篇介绍帖子,试着写了下,确实写起来更简单。原创 2023-09-24 17:46:52 · 369 阅读 · 0 评论 -
633. 平方数之和
为了避免溢出而导致的Wrong Answer,我们选择了long型数据来接受i,j,total变量而非int型数据。这题有个比较坑的测试例:c=2147483600。,你要判断是否存在两个整数。原创 2023-02-26 16:34:55 · 100 阅读 · 0 评论 -
452.用最少数量的箭引爆气球
这种方式排序时,由于做减法的两个数都比较大,会出现溢出。在这时,数组排序后,会变成{{2147483646,2147483647},{-2147483646,-2147483645}}的顺序,这与我们需要的不同。从左到右遍历points数组,如果右边界小于当前元素的左边界,说明无交集,只能新增1支箭;结合贪心的思想,使points数组中不同元素尽可能有交集,才能尽可能减少射箭的次数。很明显,它使用的是“原创 2023-02-26 16:35:43 · 137 阅读 · 0 评论 -
435. 无重叠区间
先按数组元素右边界升序排序,使用变量i指向正访问的intervals数组元素,变量j指向当前访问的后一个intervals数组元素。从左到右遍历intervals数组,如果i指向的数组元素的右边界原创 2023-02-26 16:35:09 · 120 阅读 · 0 评论