自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(81)
  • 收藏
  • 关注

原创 738.单调递增的数字

这段代码实现的功能是:给定一个整数N,找出大于等于N且其各位数字非降序排列的最小整数。通过将整数转换为字符串,可以方便地逐位处理数字,当发现某一位数字大于其后一位时,将其减1,并将后续的所有数字置为9。最后将处理过的字符串转回整数类型并返回。

2024-04-08 18:41:49 280

原创 56.合并区间

这个C++代码实现了一个名为Solution的类,其中有一个公共成员函数merge,该函数接收一个二维整数向量(表示一系列闭区间),并返回一个新的二维整数向量,其中包含所有已合并的不重叠区间。此函数的主要功能是合并给定的一系列区间,使得合并后区间集合中任意两个区间互不重叠。通过先对区间进行排序,然后遍历区间集合,根据起始和结束坐标判断并合并重叠区间来实现这一目标。

2024-04-06 18:48:48 376

原创 763.划分字幕区间(C++)

这段代码实现了一个名为Solution的类,其中有一个成员函数partitionLabels。给定一个字符串S,该函数将字符串分割成多个子串,使得每个子串包含的字符都是互异且连续的。最终返回一个整数向量,表示各个子串的长度。通过创建一个哈希表(在这里使用数组hash)来记录每个字符最后一次出现的位置,并逐步更新左右边界以找到符合条件的子串。

2024-04-05 19:52:12 416

原创 435.无重叠区间

这段代码实现了一个正确的解决方案,它可以找到并计算出在给定区间数组中为了消除所有重叠需要移除的区间数量。首先对区间按起始位置进行排序,然后遍历排序后的区间,如果当前区间与前一区间重叠,则增加移除计数器并更新pre为两区间结束位置的较小值。若不重叠则更新pre为当前区间的结束位置。最后返回移除的区间数量。

2024-04-02 18:58:48 353

原创 452.用最少数量的箭引爆气球

总体而言,这个解决方案首先通过排序找出所有气球起始坐标的顺序,然后遍历排序后的气球列表,如果相邻气球之间不连续(即一个气球的起始坐标在另一个气球的结束坐标右侧),则增加箭的总数。否则,更新当前气球的结束坐标为两者中较短的一个,这样可以合并连续的气球段,减少所需箭的数量。最后返回计算出的最少箭数。

2024-04-01 19:54:05 201

原创 860.柠檬水找零

【代码】860.柠檬水找零。

2024-03-29 19:00:05 162

原创 135.分发糖果

【代码】135.分发糖果。

2024-03-28 19:30:27 229

原创 134.加油站

这段Java代码是解决“加油站”问题的一个解决方案。给定一系列加油站及其对应的加油量和消耗油量,此方法寻找是否存在一个起始加油站,使得汽车能按照顺序经过所有加油站后回到起始站,且油量恰好用完。如果存在这样的环形行驶路线,则返回起始加油站的索引;若不存在,则返回-1。

2024-03-28 19:00:40 265

原创 4005.K次取反后最大化的数组和

此方法的作用是在给定整数数组nums中进行最多K次操作,每次操作可以选择一个负数变为它的相反数(正数)。目标是使数组元素和尽可能大。首先按绝对值大小对数组进行降序排列,然后优先将负数变为正数,最后若变换次数K为奇数,则将当前绝对值最小的元素变号。最后返回处理后数组的元素总和。

2024-03-27 19:33:58 281

原创 45.跳跃游戏||

这个Java方法是用来求解“最少跳跃次数”问题的,给定一个非负整数数组,表示每个位置可以跳跃的最大长度,求从数组第一个元素到最后一个元素的最少跳跃次数。通过动态规划的方式逐步更新能够跳跃到的最远位置,并在此过程中累加跳跃次数。

2024-03-27 18:53:06 269

原创 55.跳跃问题

这个Java代码定义了一个名为Solution的类,并实现了一个名为canJump的方法。该方法用于判断一个给定整数数组(表示每个位置可以跳跃的最大长度)中,是否可以从数组的第一个位置跳到最后一个位置。总之,这段代码是用来解决“跳跃游戏”问题的,它通过动态计算可到达的最大覆盖范围来判断玩家能否从数组的起始位置跳到最后一个位置。

2024-03-27 18:33:43 150

原创 122.买卖股票的最佳时机||

【代码】122.买卖股票的最佳时机||

2024-03-26 10:33:00 273

原创 53.最大子数组和

这段代码实现了一个寻找整数数组中具有最大和的连续子数组的功能。通过动态计算并更新累计和count以及最大子数组之和sum,可以有效地在一次遍历中找到结果。

2024-03-26 10:15:48 261

原创 376.摆动序列

【代码】376.摆动序列。

2024-03-25 19:49:30 288

原创 455.分发饼干

这个Java方法实现了一个解决方案,用于解决分配饼干问题。它首先对孩子们的胃口和饼干的大小进行排序,然后尝试用饼干去满足孩子们的胃口。在遍历饼干的过程中,如果找到一块饼干能满足某个孩子的胃口,则将该孩子标记为已满足,并增加已满足孩子的计数。最后返回成功喂饱的孩子总数。

2024-03-25 19:17:58 1130

原创 332.重新安排行程

这段代码的主要功能是解决一个问题:给定一组机票,要求从"JFK"机场出发,按照字典序规划一条尽可能使用所有机票、形成闭环的旅行路线。代码通过维护一个HashMap存储所有可能的航班线路,并采用深度优先搜索策略寻找符合条件的路线。很抱歉,由于之前的回答没有提供代码高亮和格式化功能,导致代码块不易阅读。

2024-03-23 19:13:35 282

原创 47.全排列II

这段代码实现了一个求解不重复整数数组全排列的算法。其中backTrack函数通过深度优先搜索遍历所有可能的排列组合,并利用一个布尔数组used来确保在每层递归过程中不会重复选择相同的元素(同一树枝)。当遇到相等但未使用的相邻元素时,会跳过以避免生成重复排列。最终将满足条件的排列存储在result变量中。

2024-03-18 19:10:25 401

原创 46.全排列

这段代码实现了一个求解整数数组全排列的算法。主要利用了回溯法的思想,通过。函数进行深度优先搜索遍历所有可能的排列组合,并将满足条件的排列存储在。进行回溯,撤销上一步的选择,从而继续探索剩余的可能性。每当遍历完一种排列时,通过。

2024-03-18 18:49:00 386

原创 491.非递减子序列

这段代码利用了回溯算法的思想,在遍历数组的同时维护一个递增序列路径,并不断尝试添加新的元素进行深度优先搜索,确保生成的所有子序列都是严格递增的。而对于实现了特定接口(如List接口)的对象或特定类型(如String),可能会有对应的length()或size()方法来获取其长度。这是一个Java程序,实现了一个名为Solution的类,该类用于查找给定整数数组中所有严格递增子序列。在讨论数组时,不存在nums.length()的说法,应该使用nums.length来获取数组的长度;

2024-03-17 19:59:59 426

原创 90.子集II

这段代码实现了一个Java类 Solution,其主要功能是找到一个包含重复元素的整数数组的所有可能子集。通过使用 ArrayList 存储最终结果集合,以及利用 LinkedList 存储当前递归路径中的元素,能够有效地处理重复元素并保证子集的唯一性。通过 subsetsWithDupHelper 方法进行深度优先搜索(DFS)的回溯算法来遍历所有子集组合,并将产生的每个有效子集添加到结果集中。

2024-03-16 19:40:04 368

原创 78.子集

这段代码是Java实现的一个回溯算法解决方案,用于生成给定整数数组的所有可能子集。在递归过程中,path变量记录了当前递归路径上的元素,每生成一个合法子集时,就将其加入到结果集result中。通过回溯的方式,确保了所有可能的子集都被找到并加入结果集中。动态地添加和删除元素:由于是链表结构,插入和删除操作的时间复杂度为O(1),这使得在遍历数组并构建所有可能子集时能够快速调整当前的“路径”状态。在生成子集的过程中,需要不断地向当前路径()添加元素,并在递归结束后从路径上移除最后一个元素以进行回溯操作。

2024-03-16 18:45:17 514

原创 93.复原IP地址

【代码】93.复原IP地址。

2024-03-10 19:28:29 342

原创 131.分割回文串

上述代码定义了一个名为 Solution 的类,该类用于解决一个问题:将一个输入字符串 s 划分成多个子串,使得这些子串都是回文串。通过回溯算法,找出所有可能的回文子序列划分,并将结果以 List<List> 的形式返回。

2024-03-09 19:05:48 600

原创 39.组合总和

这个程序采用回溯算法求解问题,并通过在循环中判断 sum + candidates[i] > target 来进行剪枝优化,避免不必要的递归搜索。当发现某个子路径不可能达到目标值时,提前结束该分支的遍历,从而减少计算量。

2024-03-07 18:55:36 403

原创 17.电话号码的字母组合

这个代码实现了一个求解电话号码按键上数字对应字母的所有可能组合的算法。通过回溯法,逐个处理输入字符串digits中的每个数字,并根据数字与字母的对应关系生成所有可能的字母组合。

2024-03-06 19:32:20 372

原创 216.组合总和|||

这段代码实现了一个求解“组合总和 III”问题的类,目标是在数字1到9中选择k个不重复的数,使得它们的和等于给定的目标值n。通过回溯算法逐层递归地尝试各种可能性,同时运用剪枝技术减少无效搜索,最后将满足条件的组合添加到结果列表中。

2024-03-05 20:04:58 392

原创 77.组合

这段代码实现了一个求解子集组合问题的类,主要功能是从1到n的整数中找出所有可能的k个数的组合。其中combine方法是入口,调用了辅助递归方法combineHelper来逐步生成并收集所有符合条件的组合。在递归过程中,通过startIndex来控制每次迭代的起始位置,并利用回溯思想,在完成当前层级的组合后恢复现场,以便于进行下一个组合的搜索。

2024-03-05 19:30:46 426

原创 654.最大二叉树

这段Java代码实现了一个名为Solution的类,其中包含两个方法:constructMaximumBinaryTree()和constructMaximumBinaryTree1(),目的是从给定的整数数组nums中构建出一个最大二叉树。这个算法的核心思想是每次都选择子数组中的最大值作为当前子树的根节点,然后递归地对剩余部分数组构建左右子树,确保任何节点在它的子树中都具有最大的值。最后,这个过程会构建出一颗所有路径上节点值都递增的二叉树,且任意节点的值均大于其左右子节点的值。

2024-03-04 19:47:41 474

原创 105.从前序与中序遍历序列构造二叉树

这段代码实现了一个根据给定的前序遍历和中序遍历数组重建二叉树的方法。通过遍历中序遍历序列,使用哈希映射记录每个元素的索引位置,然后根据前序遍历的特点递归地构建二叉树的左右子树。在构建过程中,不断缩小前序和中序遍历序列的有效范围来定位子树元素。

2024-03-03 23:29:38 406

原创 112.路径总和

这个方法采用递归的方式遍历二叉树,对每一个节点,首先检查它是否为叶子节点(左右子节点均为空),如果是且路径和恰好等于目标值,就返回 true;否则,分别递归地在其左子树和右子树中查找是否存在满足条件的路径。最后,如果在左右子树中都没有找到满足条件的路径,则返回 false。

2024-03-03 19:26:52 365

原创 404.左叶子之和

这个方法的主要作用是计算一棵二叉树中所有左叶子节点的值之和。采用深度优先搜索(DFS)策略,通过递归遍历整棵树,当遇到满足条件的左叶子节点(无左右子节点)时,将它的值加入到总和中。

2024-03-01 19:26:55 375

原创 110.平衡二叉树

【代码】110.平衡二叉树。

2024-02-28 18:10:59 379

原创 222.完全二叉树的节点个数

【代码】222.完全二叉树的节点个数。

2024-02-28 17:35:25 384

原创 111.二叉树的最小深度

在这段代码中,minDepth方法用于计算二叉树的最小深度。如果根节点为空,则深度为0。如果根节点只有左子树或只有右子树,则最小深度是相应子树的最小深度加1。如果根节点既有左子树又有右子树,则最小深度是左子树和右子树中最小深度的那个加1。通过递归调用minDepth方法来计算子树的最小深度。

2024-02-27 20:19:33 372

原创 559.n叉树的最大深度

这段代码是一个Java类Solution,其中包含一个公共方法maxDepth,用于计算一个二叉树的最大深度。这里的二叉树是一个特殊的数据结构,其中每个节点Node可能有一个或多个子节点(在这里被称为children)。然后,它遍历根节点的所有子节点,并递归地计算每个子节点的深度。注意:在这段代码中,我们假设Node类已经定义好了,并且有一个名为children的属性,它是一个Node对象的列表,表示该节点的子节点。我们还假设Node类是一个有效的二叉树节点类,其中每个节点可以有0个或多个子节点。

2024-02-27 19:51:58 397

原创 104.二叉树最大的深度

【代码】104.二叉树最大的深度。

2024-02-27 19:33:11 993

原创 226.翻转二叉树

这段代码通过递归的方式,利用前序遍历或后序遍历来反转二叉树。首先判断根节点是否为空,如果为空则直接返回null。然后递归地反转左子树和右子树,最后交换根节点的左右子节点。这样,整个二叉树就被反转了。

2024-02-25 18:01:33 378

原创 145.二叉树的后序遍历

postorderTraversal 方法是公共接口,它接收一个二叉树的根节点作为参数,并返回一个包含后序遍历结果的整数列表。postorder 方法是一个私有递归方法,它接收一个节点和一个列表作为参数。如果节点为空,则方法直接返回。否则,它首先递归地对其左子树执行后序遍历,然后对其右子树执行后序遍历,最后将当前节点的值添加到列表中。在这段代码中,TreeNode 是一个自定义的二叉树节点类,它至少包含三个成员:val(节点的值),left(指向左子节点的引用),和 right(指向右子节点的引用)。

2024-02-24 20:44:55 397

原创 94. 二叉树的中序遍历

inorder 方法是一个私有递归方法,它接收一个节点和一个列表作为参数。如果节点为空,则方法直接返回。否则,它首先递归地对其左子树执行中序遍历,然后将当前节点的值添加到列表中,最后递归地对其右子树执行中序遍历。inorderTraversal 方法是公共接口,它接收一个二叉树的根节点作为参数,并返回一个包含中序遍历结果的整数列表。在这段代码中,TreeNode 是一个自定义的二叉树节点类,它至少包含三个成员:val(节点的值),left(指向左子节点的引用),和 right(指向右子节点的引用)。

2024-02-24 20:21:36 383

原创 144. 二叉树的前序遍历

这里的TreeNode是一个自定义的二叉树节点类,它通常包含三个成员:val表示节点的值,left表示指向左子节点的引用,right表示指向右子节点的引用。但由于代码中并没有给出TreeNode的定义,所以这里只能假设其存在和具有这些属性。前序遍历的顺序是:先访问根节点,然后访问左子树,最后访问右子树。这段代码正是按照这种顺序实现了二叉树的前序遍历。

2024-02-24 19:50:14 483

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除