自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 leetcode148:排序列表

使用一个辅助的 merge 函数,将两个有序的子链表合并成一个有序的链表,并返回合并后链表的头节点和尾节点,以避免后续的遍历操作。最终结果:经过所有步长的合并后,链表将被完全排序,返回 dummy.next 作为排序后的链表头节点。计算链表长度:首先遍历链表,确定其长度,以便后续合并子链表时知道每次需要处理的步长。分割链表:在每次步长内,将链表分割成长度为 step 的子链表。合并子链表:将相邻的两个子链表进行合并,合并后的链表保持有序。更新指针:将合并后的子链表连接回主链表中。

2025-01-02 23:22:18 277

原创 leetcode108:将有序数组转化为二叉搜索树

一个已排序的整数数组nums,其中元素是严格递增的。数组的长度n。数组的元素范围为。题目要求将一个有序数组转换为一棵平衡二叉搜索树,最自然的方法是利用数组的中间元素作为根节点。这遵循了二叉搜索树的性质:左子树小于根节点,右子树大于根节点。由于数组已经是排序好的,我们可以通过递归方式实现树的构建。选择中间元素:递归地选择数组的中间元素作为根节点。这样可以确保树的平衡。递归构建左子树和右子树对于左子树,选择数组左半部分的中间元素。对于右子树,选择数组右半部分的中间元素。递归终止条件。

2024-12-31 22:23:39 792

原创 leetcode79:单词搜索

给定一个m x n二维字符网格board和一个字符串单词word。如果word存在于网格中,返回true;否则,返回false。单词必须按照字母顺序,通过相邻的单元格内的字母构成,其中“相邻”单元格是那些水平相邻或垂直相邻的单元格。同一个单元格内的字母不允许被重复使用。truetruefalseword给定一个m x n的二维字符网格board和一个字符串word,我们需要判断word是否存在于board中。单词的字符必须按字母顺序在相邻的格子中形成,其中“相邻”指的是水平或垂直相邻的格子。

2024-12-29 19:35:18 850

原创 leetcode52:N皇后 ||

我们可以使用n皇后算法来安排不同团队的服务器使用时间,确保在同一时间段内没有两个团队使用相同的服务器资源,从而避免资源冲突。使用回溯法尝试分配每天的服务器使用,确保同一服务器在一天内不被多个团队使用(同列冲突),不同天使用同一服务器的团队不重叠(对角线冲突)。在解决方案中,每个团队的分配可以看作是解决方案的一个“解”,通过这种方式可以优化资源的使用效率,减少项目延误和资源冲突。问题描述:n 皇后问题是指在 n x n 的棋盘上放置 n 个皇后,使得任何两个皇后都不能相互攻击。时间复杂度:O(N!

2024-12-26 17:27:51 286

原创 leetcode22:括号问题

假设有 n=3n = 3 个任务,每个任务需要“启动”和“结束”,且不能在启动前结束任务。通过上述算法,可以生成所有合法的任务执行顺序。,输入是一个数字 nn,代表括号对数,输出是一个包含所有可能且有效的括号组合的列表。通过递归地尝试添加左括号和右括号,同时确保每一步生成的部分字符串都满足有效性条件。代表生成括号的对数,请你设计一个函数,用于能够生成所有可能的并且。在任务调度场景中,括号生成问题可以用于解决任务依赖问题。通过这样的模型化方法,可以在分布式系统、自动化任务执行中应用。

2024-12-25 23:01:22 334

原创 leetcode46全排列

题目描述给定一个不含重复数字的整数数组nums,返回其所有可能的全排列。全排列指的是数组中所有元素的不同排列方式。题目要求输出所有排列,可以按照任意顺序返回。输入输出条件输入:一个不含重复数字的整数数组nums。输出:包含所有可能排列的二维数组。限制条件nums中的所有整数互不相同。边界条件数组只有一个元素时,输出应该是该元素的排列,只有一个排列方式。数组的长度较小(最大为6),因此可以使用递归或回溯算法,性能不会成为瓶颈。回溯算法。

2024-12-21 19:30:08 904

原创 leetcode77:组合

输入:n=4,k=2n = 4, k = 2。,其逻辑清晰且实现相对简单。对于本问题,优先采用。

2024-12-20 13:13:47 674

原创 leetcode17:电话号码的字母组合

题目要求:给定一个数字字符串(仅包含 2-9),按照电话按键的字母映射,返回所有可能的字母组合。给出数字到字母的映射如下(与电话按键相同)。注意 1 不对应任何字母。的字符串,返回所有它能表示的字母组合。:分解问题及最佳算法设计。

2024-12-19 13:10:50 521

原创 leetcode212. 单词搜索 II

给定一个 二维字符网格 和一个单词(字符串)列表 , 返回所有二维网格上的单词 。单词必须按照字母顺序,通过 相邻的单元格 内的字母构成,其中“相邻”单元格是那些水平相邻或垂直相邻的单元格。同一个单元格内的字母在一个单词中不允许被重复使用。示例 1:输入:board = [["o","a","a","n"],["e","t","a","e"],["i","h","k","r"],["i","f","l","v"]], words = ["oath","pea","eat","rain"]输出:["e

2024-12-18 11:43:07 1022

原创 leetcode211. 添加与搜索单词 - 数据结构设计

将一个字符串添加到词典中。:判断词典中是否存在匹配的字符串。word中可以包含特殊字符,其表示匹配任意单个字符。

2024-12-15 18:20:44 631

原创 leetcode208:前缀树

是一种树形数据结构,用于高效地存储和检索字符串数据集中的键。我们需要实现一个前缀树(Trie),这是一个树形数据结构,主要用于字符串集合的高效存储和操作。在文本文件中存储大量重复的前缀字符串时,使用 Trie 可显著减少存储量。// 返回 False。// 返回 True。// 返回 True。// 返回 True。

2024-12-14 20:02:58 765

原创 leetcode127:单词接龙

字典wordList中从单词beginWord到endWord的是一个按下述规格形成的序列siwordListbeginWordwordList给你两个单词beginWord和endWord和一个字典wordList,返回从beginWord到endWord的中的。如果不存在这样的转换序列,返回0。5一个最短转换序列是 "hit" -> "hot" -> "dot" -> "dog" -> "cog", 返回它的长度 5。0endWord "cog" 不在字典中,所以无法进行转换。

2024-12-13 22:43:57 926

原创 leetcode433:最小基因变化

记录了所有有效的基因变化,只有基因库中的基因才是有效的基因序列。(变化后的基因必须位于基因库。基因序列的变化模拟在生物信息学中有广泛的应用,尤其是在研究基因突变、进化树构建以及遗传病检测中。一次基因变化就意味着这个基因序列中的一个字符发生了变化。基因序列可以表示为一条由 8 个字符组成的字符串,其中每个字符都是。所需的最少变化次数。如果无法完成此基因变化,返回。默认是有效的,但是它并不一定会出现在基因库中。假设我们需要调查从基因序列。,请你找出并返回能够使。

2024-12-12 20:58:35 376

原创 leetcode909:蛇梯棋

给你一个大小为n x n的整数矩阵board,方格按从1到n2编号,编号遵循(即,从开始)的每一行改变方向。你一开始位于棋盘上的方格1。每一回合,玩家需要从当前方格currnextnextnextn2如果,位于r行c列的棋盘格中可能存在 “蛇” 或 “梯子”。那个蛇或梯子的目的地将会是。编号为1和n2的方格不是任何蛇或梯子的起点。注意,玩家在每次掷骰的前进过程中最多只能爬过蛇或梯子一次:就算目的地是另一条蛇或梯子的起点,玩家也继续移动。2334返回达到编号为n2。

2024-12-11 22:33:18 692

原创 leetcode207:课程表

例如,项目的某些阶段可能依赖于前一个阶段的完成,只有前一个阶段的任务完成后,才能进行当前任务。门课程,每门课程都有可能有前置课程要求,即必须先学习某些课程才能学习当前课程。你需要判断是否可以完成所有课程的学习,即是否存在一个有效的学习顺序。学习课程 1 之前,你需要先完成​课程 0;并且学习课程 0 之前,你还应先完成课程 1。通过这样的模型,项目管理系统可以优化任务的调度顺序,确保没有环状依赖,从而提高项目执行效率。学习课程 1 之前,你需要完成课程 0。在选修某些课程之前需要一些先修课程。

2024-12-09 21:18:14 868

原创 leetcode399:除法求值

你可以假设除法运算中不会出现除数为 0 的情况,且不存在任何矛盾的结果。如果问题中出现了给定的已知条件中没有出现的字符串,也需要用。结果:[6.0, 0.5, -1.0, 1.0, -1.0 ]未在等式列表中出现的变量是未定义的,因此无法确定它们的答案。如果存在某个无法确定的答案,则用。注意:x 是未定义的 => -1.0。个问题,请你根据已知条件找出。是一个表示单个变量的字符串。

2024-12-08 23:33:17 859

原创 leetcode133:克隆图

无向图以邻接列表的形式表示,其中每个节点包含一个值和一组邻居节点的引用。目标是将给定图的节点及其关系完全复制到一个新图中。该图仅仅只有一个值为 1 的节点,它没有任何邻居。给定节点将始终是图中的第一个节点(值为 1)。节点 1 的值是 1,它有两个邻居:节点 2 和 4。节点 2 的值是 2,它有两个邻居:节点 1 和 3。节点 3 的值是 3,它有两个邻居:节点 2 和 4。节点 4 的值是 4,它有两个邻居:节点 1 和 3。图中一个节点的引用,请你返回该图的。这个图是空的,它不含任何节点。

2024-12-07 22:38:59 1084

原创 字节青训Marscode11:观光景点组合得分问题

这道题的核心是通过计算每一对景点的组合得分,找到能获得最高得分的组合。具体来说,给定一个景点数组values,我们需要找到两个景点(i, j),使得:得分=values[i]+values[j]+i−j\text{得分} = values[i] + values[j] + i - j其中,i < j,并且我们希望通过遍历所有可能的(i, j)对来找到得分最大的一对。

2024-12-06 21:31:34 417

原创 leetcode130被围绕的区域

给定一个m x n的矩阵board,矩阵由字符'X'和'O'组成。我们需要捕获所有被'X'围绕的'O'区域,即将这些'O'替换为'X'。被围绕的'O'区域是指这些'O'区域完全被'X'单元格包围,且该区域不与边缘相连。

2024-12-06 21:00:53 800

原创 字节青训Marscode10:小F的永久代币卡回本计划

题目要求计算出小F至少需要登录多少天才能通过每天返还的勾玉来回本购买永久代币卡。购买永久代币卡的价格是a勾玉,每天可以返还b勾玉。数学建模与优化:通过理解问题背后的数学公式,我们避免了繁琐的循环或条件判断,直接使用简单的整数运算来得到答案。向上取整技巧:通过加法和整数除法的技巧,避免了使用浮点数和复杂的ceil函数,简化了代码。算法设计:本题虽然非常简单,但强调了通过数学建模来简化问题处理,避免了多余的计算和复杂性。

2024-12-05 18:59:22 435

原创 leetcode200:岛屿数量

给定一个由'1'(陆地)和'0'(水)组成的二维网格,计算岛屿的数量。岛屿的定义为被水包围,并且每座岛屿只能由水平方向和/或竖直方向上的相邻陆地连接而成。网格的四条边被水包围。一个二维数组grid,其中每个元素是'1'或'0',表示陆地和水。该网格的尺寸是m x n,其中。一个整数,表示网格中岛屿的数量。网格的最外层是水。每个岛屿由一片或多个'1'组成,并且相邻的'1'必须通过水平或垂直的方向连接。可能会有多个岛屿或者没有岛屿(即全是'0'

2024-12-05 18:17:59 754

原创 leetcode98:验证二叉搜索树

给定一个二叉树的根节点。

2024-12-04 19:43:28 714

原创 字节青训Marscode——8:找出整形数组中超过一半的数

从一个整数数组。

2024-12-03 23:10:26 1050

原创 leetcode230. 二叉搜索树中第 K 小的元素

二叉搜索树的中序遍历(递归或迭代)会生成一个按升序排列的节点值序列。因此,我们可以通过中序遍历 BST 来依次访问每一个节点,直到找到第。通过利用中序遍历的思想,可以优化数据库中对于排序查询的效率,特别是在没有完全排序的情况下。Morris 中序遍历利用了二叉树的线索化技术,可以在 O(1) 的空间复杂度下进行中序遍历。比如在金融交易系统中,每天的交易量会产生海量的数据,快速找到最大交易量的前。如果树经常被修改(插入/删除),我们可以利用一个。给定一个二叉搜索树(BST)的根节点。小的元素,可以考虑使用。

2024-12-03 22:48:35 767

原创 leetcode530:二叉搜索树的最小绝对值差

方案二:利用BST特性(最优解)

2024-12-02 15:03:22 229

原创 字节青训:Marscode_6:小E的怪物挑战——最新题解

这个算法的实际应用展示了如何在考虑多个约束条件下找到最优的递进序列,对于需要规划渐进式发展路径的场景特别有用。时间复杂度:O(n²) 空间复杂度:O(n)

2024-12-01 23:18:11 770

原创 leetcode:103二叉树的锯齿形遍历

(即先从左往右,再从右往左进行下一层遍历,以此类推,层与层之间交替进行)。最优解决方案:使用广度优先搜索(BFS)配合层次标记。空间复杂度:O(n),队列存储节点。

2024-12-01 23:10:17 375

原创 字节青训Marscode_5:寻找最大葫芦——最新题解

空间复杂度:O(k),用于存储频次统计和候选值。最优解决方案:贪心算法。

2024-11-30 21:35:20 511

原创 leetcode102:二叉树的层序遍历

采用的算法设计思路是广度优先搜索(BFS),适用于层序遍历。时间复杂度为 O(N),其中 N 是树中节点的数量,因为每个节点只被访问一次。空间复杂度也是 O(N),在最坏情况下,队列可能包含树的所有节点。题目要求对给定的二叉树进行层序遍历,并返回每一层的节点值列表。(即逐层地,从左到右访问所有节点)。

2024-11-30 21:06:32 639

原创 leetcode:637二叉树的层平均值

第 0 层的平均值为 3,第 1 层的平均值为 14.5,第 2 层的平均值为 11。, 以数组的形式返回每一层节点的平均值。因此返回 [3, 14.5, 11]。给定一个非空二叉树的根节点。以内的答案可以被接受。

2024-11-29 23:43:42 456

原创 leetcode:299二叉树的右视图

题目要求: 给定一个二叉树的根节点root,返回从树的右侧所能看到的节点值。我们需要按层从上到下列出这些节点。输入输出条件输入一个二叉树的根节点root,表示一个二叉树。二叉树的节点个数范围是[0, 100]。节点值范围是。输出返回一个数组,包含从右侧看到的节点值,按从上到下的顺序排列。潜在边界条件空树:当root为null时,二叉树为空,返回空数组。只有一个节点:二叉树只有根节点时,返回该节点。不平衡树:有的树可能比较不平衡,右侧看到的节点顺序和层数都可能比较复杂。

2024-11-28 21:50:42 1012

原创 Marscode75:二叉树供暖问题

天气越来越冷了,村子里有留守老人缺少照顾,会在这个冬天里挨冻,小R想运用自己的知识帮帮他们。已知村庄里每户人家作为一个节点,这些节点可以组成一个二叉树。我们可以在二叉树的节点上供应暖炉,每个暖炉可以为该节点的父节点、自身及其子节点带来温暖。给定一棵二叉树,求使整个村庄都暖和起来至少需要供应多少个暖炉?本题按层遍历顺序描述二叉树的节点情况。值为 1,代表存在一个节点,值为 0,代表不存在该节点。样例1:样例2:样例3:该问题需要在一个二叉树中,通过放置最少的暖炉节点覆盖整个树。暖炉可以覆盖其父节点、子节点及自

2024-11-27 22:18:53 949

原创 leetcode:236二叉树最近公共祖先

中最近公共祖先的定义为:“对于有根树 T 的两个节点 p、q,最近公共祖先表示为一个节点 x,满足 x 是 p、q 的祖先且 x 的深度尽可能大(给定一个二叉树, 找到该树中两个指定节点的最近公共祖先。给定一个二叉树,找到两个指定节点的最近公共祖先。因为根据定义最近公共祖先节点可以为节点本身。输出树中两个指定节点的最近公共祖先。的最近公共祖先是节点。的最近公共祖先是节点。

2024-11-27 18:28:46 533

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

给你一棵 完全二叉树 的根节点 root ,求出该树的节点个数。完全二叉树 的定义如下:在完全二叉树中,除了最底层节点可能没填满外,其余每层节点数都达到最大值,并且最下面一层的节点都集中在该层最左边的若干位置。若最底层为第 h 层,则该层包含 1~ 2h 个节点。示例 1:输入:root = [1,2,3,4,5,6]输出:6示例 2:输入:root = []输出:0示例 3:输入:root = [1]输出:1提示:树中节点的数目范围是[0, 5 * 104]

2024-11-26 22:57:33 878

原创 leetcode:173. 二叉搜索树迭代器

实现一个二叉搜索树迭代器类roottruefalseint next()注意,指针初始化为一个不存在于 BST 中的数字,所以对next()的首次调用将返回 BST 中的最小元素。你可以假设next()调用总是有效的,也就是说,当调用next()时,BST 的中序遍历中至少存在一个下一个数字。// 返回 3// 返回 7// 返回 True// 返回 9// 返回 True// 返回 15// 返回 True// 返回 20// 返回 False[1, 105]105。

2024-11-25 21:03:17 547

原创 leetcode:124二叉树中最大路径和

这道题可以用递归结合分治法解决,核心思想是动态规划 + 后序遍历。被定义为一条节点序列,序列中每对相邻节点之间都存在一条边。同一个节点在一条路径序列中。最优路径是 15 -> 20 -> 7 ,路径和为 15 + 20 + 7 = 42。最优路径是 2 -> 1 -> 3 ,路径和为 2 + 1 + 3 = 6。节点,且不一定经过根节点。是路径中各节点值的总和。给你一个二叉树的根节点。

2024-11-24 21:07:52 1034

原创 leetcode:129. 求根节点到叶节点数字之和

这是一个二叉树的遍历与数值计算问题,需要从根到叶节点的所有路径,组合成数字并计算总和。因此,数字总和 = 495 + 491 + 40 =因此,数字总和 = 12 + 13 =,树中每个节点都存放有一个。计算从根节点到叶节点生成的。给你一个二叉树的根节点。是指没有子节点的节点。

2024-11-23 16:27:35 789

原创 leetcode:112. 路径总和

给你二叉树的根节点root和一个表示目标和的整数targetSum。判断该树中是否存在的路径,这条路径上所有节点值相加等于目标和targetSum。如果存在,返回true;否则,返回false。是指没有子节点的节点。true等于目标和的根节点到叶节点路径如上图所示。false树中存在两条根节点到叶子节点的路径:(1 --> 2): 和为 3(1 --> 3): 和为 4不存在 sum = 5 的根节点到叶子节点的路径。false由于树是空的,所以不存在根节点到叶子节点的路径。

2024-11-22 22:15:13 956

原创 leetcode:114. 二叉树展开为链表

在文件系统中,将目录结构表示为二叉树。为了遍历所有文件(先序顺序),可以利用此算法原地将目录树展开为链表,并顺序访问所有文件路径,无需占用额外的栈或队列。以上解决方案既考虑了算法设计的高效性,也注重实际应用的可行性和通用性。: 返回一个以二叉树先序遍历顺序展开的链表。额外空间)展开这棵树吗?给定一个二叉树的根节点。你可以使用原地算法(

2024-11-21 18:39:39 885

原创 117. 填充每个节点的下一个右侧节点指针 II

给定二叉树如图 A 所示,你的函数应该填充它的每个 next 指针,以指向其下一个右侧节点,如图 B 所示。序列化输出按层序遍历顺序(由 next 指针连接),'#' 表示每层的末尾。填充它的每个 next 指针,让这个指针指向其下一个右侧节点。如果找不到下一个右侧节点,则将 next 指针设置为。初始状态下,所有 next 指针都被设置为。

2024-11-20 23:21:07 666

空空如也

空空如也

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

TA关注的人

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