自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 [bug记录] Waiting in store based barrier to initialize process group for rank: 卡住问题

解决办法就是把原来的output_dir删掉,或者重新开一个。

2024-06-07 11:52:36 257

原创 [力扣 Hot100]岛屿数量

给你一个由 ‘1’(陆地)和 ‘0’(水)组成的的二维网格,请你计算网格中岛屿的数量。岛屿总是被水包围,并且每座岛屿只能由水平方向和/或竖直方向上相邻的陆地连接形成。此外,你可以假设该网格的四条边均被水包围。

2024-03-17 20:29:40 483

原创 [力扣 Hot100]二叉树中的最大路径和

二叉树中的 路径 被定义为一条节点序列,序列中每对相邻节点之间都存在一条边。同一个节点在一条路径序列中 至多出现一次。该路径 至少包含一个 节点,且不一定经过根节点。给你一个二叉树的根节点 root ,返回其 最大路径和。DFS寻找左右子树的最长路径,然后看看相加能否变得更大。路径和 是路径中各节点值的总和。

2024-03-10 16:19:42 642

原创 [力扣 Hot100]二叉树的最近公共祖先

百度百科中最近公共祖先的定义为:“对于有根树 T 的两个节点 p、q,最近公共祖先表示为一个节点 x,满足 x 是 p、q 的祖先且 x 的深度尽可能大(一个节点也可以是它自己的祖先)。DFS搜p,q是否在左右子树中,相当于找到共同祖先后把祖先往上抬。给定一个二叉树, 找到该树中两个指定节点的最近公共祖先。

2024-03-10 15:48:05 719

原创 [力扣 Hot100]路径总和 III

给定一个二叉树的根节点 root ,和一个整数 targetSum ,求该二叉树里节点值之和等于 targetSum 的 路径 的数目。路径 不需要从根节点开始,也不需要在叶子节点结束,但是路径方向必须是向下的(只能从父节点到子节点)。递归看任意子树从根出发的路径是否符合要求,注意和用float存。

2024-03-10 14:59:57 393

原创 [力扣 Hot100]从前序与中序遍历序列构造二叉树

给定两个整数数组 preorder 和 inorder ,其中 preorder 是二叉树的先序遍历, inorder 是同一棵树的中序遍历,请构造二叉树并返回其根节点。根据先序和中序可以划分左右子树,递归构造子树即可。

2024-03-09 19:48:44 443

原创 [力扣 Hot100]二叉树展开为链表

展开后的单链表应该同样使用 TreeNode ,其中 right 子指针指向链表中下一个结点,而左子指针始终为 null。展开后的单链表应该与二叉树 先序遍历 顺序相同。先序遍历,维护链指针。

2024-03-08 16:18:14 451

原创 [力扣 Hot100]二叉树的右视图

给定一个二叉树的 根节点 root,想象自己站在它的右侧,按照从顶部到底部的顺序,返回从右侧所能看到的节点值。层序遍历,选择每层的最后一个。

2024-03-08 14:43:19 464

原创 [力扣 Hot100]二叉搜索树中第K小的元素

给定一个二叉搜索树的根节点 root ,和一个整数 k ,请你设计一个算法查找其中第 k 个最小元素(从 1 开始计数)。

2024-03-07 16:18:50 403

原创 [力扣 Hot100]验证二叉搜索树

给你一个二叉树的根节点 root ,判断其是否是一个有效的二叉搜索树。按中序遍历,只要节点值是递增的即可,对于minNode需要特判。所有左子树和右子树自身必须也是二叉搜索树。节点的右子树只包含 大于 当前节点的数。只包含 小于 当前节点的数。

2024-03-07 16:05:06 385

原创 [力扣 Hot100]将有序数组转换为二叉搜索树

给你一个整数数组 nums ,其中元素已经按 升序 排列,请你将其转换为一棵 高度平衡 二叉搜索树。高度平衡 二叉树是一棵满足「每个节点的左右两个子树的高度差的绝对值不超过 1 」的二叉树。

2024-03-07 10:27:45 382

原创 [力扣 Hot100]二叉树的层序遍历

给你二叉树的根节点 root ,返回其节点值的 层序遍历。(即逐层地,从左到右访问所有节点)。用队列存,每层之间用null隔开。

2024-03-05 17:34:33 476

原创 [力扣 Hot100]二叉树的直径

二叉树的 直径 是指树中任意两个节点之间最长路径的 长度。这条路径可能经过也可能不经过根节点 root。对于每一个节点以其为根的子树的直径就是其左右子树深度之和.给你一棵二叉树的根节点,返回该树的 直径。两节点之间路径的 长度 由它们之间边数表示。

2024-03-05 11:16:03 448

原创 [力扣 Hot100]对称二叉树

每一对对称的节点AB,A的左儿子和B的右儿子,A的右儿子和B的左儿子又是一队对称节点。给你一个二叉树的根节点 root , 检查它是否轴对称。

2024-03-05 10:28:00 416

原创 [力扣 Hot100]翻转二叉树

给你一棵二叉树的根节点 root ,翻转这棵二叉树,并返回其根节点。先序遍历,无脑翻转。

2024-02-26 09:53:31 443

原创 [力扣 Hot100]二叉树的最大深度

二叉树的 最大深度 是指从根节点到最远叶子节点的最长路径上的节点数。给定一个二叉树 root ,返回其最大深度。

2024-02-26 09:47:41 411

原创 [力扣 Hot100]二叉树的中序遍历

给定一个二叉树的根节点 root ,返回 它的 中序 遍历。

2024-02-26 09:27:25 379

原创 [力扣 Hot100]LRU 缓存

void put(int key, int value) 如果关键字 key 已经存在,则变更其数据值 value;如果不存在,则向缓存中插入该组 key-value。如果插入操作导致关键字数量超过 capacity ,则应该 逐出 最久未使用的关键字。int get(int key) 如果关键字 key 存在于缓存中,则返回关键字的值,否则返回 -1。写了两个版本都超时,单向链表和迭代器的查找都太慢,需要用哈希表。请你设计并实现一个满足。缓存 约束的数据结构。

2024-02-25 11:40:51 591

原创 [力扣 Hot100]合并 K 个升序链表

如果是考研题,可以用败者树,但代码太难写了,我选择直接比。请你将所有链表合并到一个升序链表中,返回合并后的链表。给你一个链表数组,每个链表都已经按升序排列。

2024-02-23 09:36:37 375

原创 [力扣 Hot100]排序链表

给你链表的头结点 head ,请将其按 升序 排列并返回 排序后的链表。

2024-02-22 10:54:30 410

原创 [力扣 Hot100]随机链表的复制

深拷贝应该正好由 n 个 全新节点组成,其中每个新节点的值都设为其对应的原节点的值。新节点的 next 指针和 random 指针也都应指向复制链表中的新节点,并使原链表和复制链表中的这些指针能够表示相同的链表状态。空间换时间,用一个pair数组存下来链表结构,然后先构建出random全为null的链表,构建时用指针数组存下来各节点指针,最后把各节点的random补齐即可。给你一个长度为 n 的链表,每个节点包含一个额外增加的随机指针 random ,该指针可以指向链表中的任何节点或空节点。

2024-02-21 10:24:36 427

原创 [力扣 Hot100]K 个一组翻转链表

k 是一个正整数,它的值小于或等于链表的长度。如果节点总数不是 k 的整数倍,那么请将最后剩余的节点保持原有顺序。跟昨天两两交换的思路一致,引入了指针数组来用空间换时间,改进了一下使得主函数更加简洁。给你链表的头节点 head ,每 k 个节点一组进行翻转,请你返回修改后的链表。你不能只是单纯的改变节点内部的值,而是需要实际进行节点交换。

2024-02-20 11:03:49 467

原创 [力扣 Hot100]两两交换链表中的节点

给你一个链表,两两交换其中相邻的节点,并返回交换后链表的头节点。你必须在不修改节点内部的值的情况下完成本题(即,只能进行节点交换)。前两个结点先偷一手用交换val做,从链表第1项(0开始计数)开始递归调用来交换结点。

2024-02-19 20:16:25 500

原创 [力扣 Hot100]删除链表的倒数第 N 个结点

给你一个链表,删除链表的倒数第 n 个结点,并且返回链表的头结点。两个指针间隔n,一趟遍历解决。

2024-02-18 20:01:44 467

原创 [力扣 Hot100]两数相加

逆序两数相加也是逆序返回,可以用一个进位位来模拟(进位位只有可能是0或1)。要考虑谁长谁短的问题,最终结果可能需要在最长的基础上再新加一位(新建一个尾结点)。给你两个 非空 的链表,表示两个非负的整数。它们每位数字都是按照 逆序 的方式存储的,并且每个节点只能存储 一位 数字。你可以假设除了数字 0 之外,这两个数都不会以 0 开头。请你将两个数相加,并以相同形式返回一个表示和的链表。

2024-02-17 21:37:58 525

原创 [力扣 Hot100]合并两个有序链表

将两个升序链表合并为一个新的 升序 链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。简单题,两个指针就能解决。

2024-02-16 19:21:03 504

原创 [力扣 Hot100]环形链表 II

如果链表中有某个节点,可以通过连续跟踪 next 指针再次到达,则链表中存在环。为了表示给定链表中的环,评测系统内部使用整数 pos 来表示链表尾连接到链表中的位置(索引从 0 开始)。如果 pos 是 -1,则在该链表中没有环。跟昨天的题类似,易于证明从相遇点到环起点的距离等于从起点到环起点的距离,所以在快慢指针相遇后令其中一个指针指向head,另一个还指向相遇点,二者同步移动,再次相遇时必在环起点。给定一个链表的头节点 head ,返回链表开始入环的第一个节点。如果链表无环,则返回 null。

2024-02-07 09:07:01 477

原创 [力扣 Hot100]环形链表

如果链表中有某个节点,可以通过连续跟踪 next 指针再次到达,则链表中存在环。为了表示给定链表中的环,评测系统内部使用整数 pos 来表示链表尾连接到链表中的位置(索引从 0 开始)。注意:pos 不作为参数进行传递。仅仅是为了标识链表的实际情况。经典考研题,使用快慢两指针,若有换两指针必在有限时间O(n)内相遇,若无环则快指针先一步走到链表尾。如果链表中存在环 ,则返回 true。否则,返回 false。给你一个链表的头节点 head ,判断链表中是否有环。

2024-02-06 10:33:16 447

原创 [力扣 Hot100]回文链表

首先计算链表长度n,然后拿一个数组存前n/2项,若n为奇数则略过第n/2+1项,随后对链表后n/2项遍历,与数组内容比对即可。给你一个单链表的头节点 head ,请你判断该链表是否为回文链表。如果是,返回 true;否则,返回 false。

2024-02-05 08:31:12 386

原创 [力扣 Hot100]反转链表

给你单链表的头节点 head ,请你反转链表,并返回反转后的链表。经典考研题,用头插法解决。

2024-02-04 09:08:40 452

原创 [力扣 Hot100]相交链表

也是一道往年考研题,先遍历两个链表求长度,然后用两个指针分别指向A和B的首个元素。对长的链表遍历,直到长链表待遍历节点数等于短链表长度,随后两个指针同步移动,直到二者同指。评测系统将根据这些输入创建链式数据结构,并将两个头节点 headA 和 headB 传递给你的程序。如果程序能够正确返回相交节点,那么你的解决方案将被 视作正确答案。给你两个单链表的头节点 headA 和 headB ,请你找出并返回两个单链表相交的起始节点。如果两个链表不存在相交节点,返回 null。

2024-02-03 10:50:19 418

原创 [力扣 Hot100]搜索二维矩阵 II

矩阵的特点是任意一个位置的数是以其为右下角的子矩阵的最大值,同时是以其为左上角的子矩阵的最小值。所以可以进行二分查找。当target大于某个位置的值时,以这个位置为右下角的矩阵就不用搜了,剩余的部分组成两个新的矩阵。编写一个高效的算法来搜索 m x n 矩阵 matrix 中的一个目标值 target。每行的元素从左到右升序排列。每列的元素从上到下升序排列。

2024-02-02 11:43:58 669

原创 [力扣 Hot100]旋转图像

给定一个 n × n 的二维矩阵 matrix 表示一个图像。请你将图像顺时针旋转 90 度。旋转图像,这意味着你需要直接修改输入的二维矩阵。请不要 使用另一个矩阵来旋转图像。旋转时每四个位置为一组进行swap操作,找好对应规律后本题并不难。

2024-02-01 09:19:35 452

原创 [力扣 Hot100]螺旋矩阵

用递归做,先输出最外层(顶行右列底行左列),再递归输出内层矩阵,对矩阵宽或高为1时进行特判并返回、给你一个 m 行 n 列的矩阵 matrix ,请按照 顺时针螺旋顺序 ,返回矩阵中的所有元素。

2024-01-31 09:18:35 414

原创 [力扣 Hot100]矩阵置零

在原数组上直接操作势必会出现“冗余”的0,即原本[i,j]处不是0,例如由于i行的其他位置有0导致[i,j]处被置0,从而j列本来没有0却被置0。朴素的想法就是空间复杂度O(mn),优化一下只存行号和列号就是O(m+n),再优化就可以直接用矩阵的第0行和第0列来充当辅助数组,复杂度O(1),但需要注意的是一开始要避开第0行和第0列,以免辅助数组中出现“冗余”的0。给定一个 m x n 的矩阵,如果一个元素为 0 ,则将其所在行和列的所有元素都设为 0。请使用 原地 算法。

2024-01-30 17:22:16 596

原创 [力扣 Hot100]缺失的第一个正数

也是408考研题,思路就是建立额外的数组来存储出现过的正数,不过有个巧妙之处在于没出现的最小正数不会超过n+1(极端情况下nums数组内是1~n),所以辅助数组不超过n即可。给你一个未排序的整数数组 nums ,请你找出其中没有出现的最小的正整数。请你实现时间复杂度为 O(n) 并且只使用常数级别额外空间的解决方案。

2024-01-29 10:57:24 430

原创 [力扣 Hot100]除自身以外数组的乘积

给你一个整数数组 nums,返回 数组 answer ,其中 answer[i] 等于 nums 中除 nums[i] 之外其余各元素的乘积。题目数据 保证 数组 nums之中任意元素的全部前缀元素和后缀的乘积都在 32 位 整数范围内。请 不要使用除法,且在 O(n) 时间复杂度内完成此题。

2024-01-28 11:20:59 452

原创 [力扣 Hot100]轮转数组

好像是某一年的考研题,原地逆序后k项,再逆序前n-k项,再逆序整个数组即可。空间复杂度O(1),时间复杂度O(n)。要注意k可能比n大,需要对n取余。给定一个整数数组 nums,将数组中的元素向右轮转 k 个位置,其中 k 是非负数。

2024-01-27 08:39:49 400

原创 [力扣 Hot100]合并区间

以数组 intervals 表示若干个区间的集合,其中单个区间为 intervals[i] = [starti, endi]。请你合并所有重叠的区间,并返回 一个不重叠的区间数组,该数组需恰好覆盖输入中的所有区间。使用类似位示图的方法表示,但是对于[0,0][1,4]这种会被误认为连续,所以全部*2以做分隔。

2024-01-26 10:04:53 406

原创 [力扣 Hot100]最大子数组和

给你一个整数数组 nums ,请你找出一个具有最大和的连续子数组(子数组最少包含一个元素),返回其最大和。使用动规思想,维护局部和,当局部和小于零时就该舍弃并重新选取局部起点,局部和的历史最大值即为结果。子数组 是数组中的一个连续部分。

2024-01-25 10:46:31 411

空空如也

空空如也

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

TA关注的人

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