- 博客(90)
- 收藏
- 关注
原创 Makefile的基础用法
源文件.c文件 --> 预编译成.i文件 --> 编译成汇编语言.s --> 汇编成.o文件 --> 链接成可执行文件(名字自定义, 后缀没关系)。#方式1#方式2$@ : 目标(target)的完整名称$< : 第一个依赖文件(prerequisties)的名称$^ : 所有的依赖文件(prerequisties),以空格分开,不包含重复的依赖文件@echo $^
2026-10-28 23:17:08
211
原创 46 将二叉树展开为链表
给你二叉树的根结点rootTreeNoderightnullroot = [][]root = [0][0][0, 2000]你可以使用原地算法(O(1)额外空间)展开这棵树吗?二叉树的前序遍历,用queue来存储节点,遍历方式还是和中序遍历一样。
2026-10-24 16:24:31
175
原创 40 二叉树的直径
给你一棵二叉树的根节点,返回该树的。二叉树的是指树中任意两个节点之间最长路径的。这条路径可能经过也可能不经过根节点root。两节点之间路径的由它们之间边数表示。33 ,取路径 [4,2,1,3] 或 [5,2,1,3] 的长度。1[1, 104]
2026-10-24 15:58:42
175
原创 44 二叉搜索树中第K小的元素
给定一个二叉搜索树的根节点root,和一个整数k,请你设计一个算法查找其中第k小的元素(k从 1 开始计数)。13n。
2026-09-28 00:53:05
205
原创 43 验证二叉搜索树
3、判断节点是否满足大小,需要维护一个范围的区间。先遍历根节点,根节点的范围是正无穷到负无穷,左子节点的范围是(-无穷,根节点大小),右子节点的范围是(根节点大小,正无穷)2、如果该二叉树的左子树不为空,则左子树上所有节点的值均小于它的根节点的值;若它的右子树不空,则右子树上所有节点的值均大于它的根节点的值;它的左右子树也为二叉搜索树。1、当前节点小于他的右子树节点,大于左子树的节点,然后遍历整颗树。,请你设计一个算法查找其中第。给定一个二叉搜索树的根节点。从 1 开始计数)。
2026-09-28 00:17:27
218
原创 42 将有序数组转换为二叉搜索树
给你一个整数数组nums,其中元素已经按排列,请你将其转换为一棵平衡 二叉搜索树。[0,-10,5,null,-3,null,9] 也将被视为正确答案:[3,1][1,null,3] 和 [3,1] 都是高度平衡二叉搜索树。
2026-09-27 19:07:48
140
原创 41 二叉树的层序遍历
3、第二个小循环,循环取出outQue里的节点放入vector中,然后把节点的左右子树放入inQue中。3、进入小循环,循环取出inQue的节点,将值放入vector中,然后把左右子节点放入outQue中。1、创建两个队列,一个用于存放当前层,一个用于存放下一层。4、继续下一层循环,直到队列为空。退出循环,返回vector。(即逐层地,从左到右访问所有节点)。2、先把根节点入队,inQue,进入大循环。
2026-09-27 16:26:29
135
原创 39 对称二叉树
给你一个二叉树的根节点root, 检查它是否轴对称。truefalse[1, 1000]你可以运用递归和迭代两种方法解决这个问题吗?对称二叉树,首先对称的节点的值必须要相等对于树中L和R,一定有即L的 左子节点 和R的 右子节点 对称。即L的 右子节点 和R的 左子节点 对称。
2026-09-27 15:50:12
205
原创 vptr(虚表指针) 和 vtable(虚表)
C++ 通过虚函数表(vtable)实现运行时多态。为这个类生成一张虚表(vtable):本质是一个函数指针数组,里面存放该类所有虚函数的地址。在每个对象的内存布局最前面插入一个隐藏指针(vptr):指向该类的 vtable。| vptr | <- 8 字节(64 位系统),指向 vtable| 成员变量 1 || 成员变量 2 || ... |对象内存 vtable(.rodata)| 成员 a = 0x11 | | typeinfo ptr |多态调用p->func1()
2026-09-27 15:39:07
350
原创 36 二叉树中序遍历
给定一个二叉树的根节点root,返回它的遍历。[1,3,2]root = [][]root = [1][1][0, 100]递归算法很简单,你可以通过迭代算法完成吗?
2026-09-25 17:00:25
232
原创 LRU缓存设计与实现
答:哈希表提供 O(1) 的 key 定位,双向链表在持有节点指针的前提下提供 O(1) 的删除和插入。两个操作合起来,get和put都是常数时间。
2026-09-25 15:28:11
340
原创 C++ 异常处理完全指南
public:要点优先继承,而不是裸(自动获得what()构造函数explicit,避免隐式转换// 全局异常基类,所有项目异常都派生自它public:顶层maintry {return 1;return 1;C++ 异常是一套完整但昂贵语法层+ 类型匹配 + 重新抛出机制层:栈展开 + RAII + 两阶段 unwind(Phase1 搜索 / Phase2 清理)实现层:Itanium ABI 表驱动(零成本)与 Windows SEH 双体系工程层。
2026-09-22 00:29:20
234
原创 34 合并K个升序链表
请你将所有链表合并到一个升序链表中,返回合并后的链表。给你一个链表数组,每个链表都已经按升序排列。将它们合并到一个有序链表中得到。
2026-09-13 13:51:20
77
原创 33 链表排序
给你链表的头结点head,请将其按排列并返回。[1,2,3,4]head = [][]你可以在O(n log n)时间复杂度和常数级空间复杂度下,对链表进行排序吗?
2026-09-13 13:10:42
231
原创 32 随机链表的复制
给你一个长度为n的链表,每个节点包含一个额外增加的随机指针random,该指针可以指向链表中的任何节点或空节点。构造这个链表的。深拷贝应该正好由n个节点组成,其中每个新节点的值都设为其对应的原节点的值。新节点的next指针和random指针也都应指向复制链表中的新节点,并使原链表和复制链表中的这些指针能够表示相同的链表状态。。例如,如果原链表中有X和Y两个节点,其中。那么在复制链表中对应的两个节点x和y,同样有。返回复制链表的头节点。用一个由n个节点组成的链表来表示输入/输出中的链表。
2026-08-31 22:12:05
231
原创 linux操作系统概述
操作系统,简称OS(Operation System),是介于计算机硬件与应用程序之间的一层核心系统软件。操作系统负责管理计算机的所有硬件资源,包括CPU、内存、硬盘、网卡等,并负责将它们合理、高效、公平地分配给不同的应用程序,防止它们之间互相冲突。管理与抽象。
2026-08-29 17:38:24
221
原创 RDB持久化功能详解
RDB(Redis Database)是一种二进制格式的快照持久化方案,将内存数据库在某一时刻的完整状态保存到磁盘文件中。相比AOF(Append Only File),RDB文件更紧凑、恢复速度更快,特别适合做备份和灾难恢复。特性说明二进制格式紧凑高效,可跨版本兼容全量快照保存某一时刻的完整数据状态快速恢复直接加载二进制文件,无需重放命令后台保存通过fork()实现,不阻塞主进程文件紧凑相比AOF文件更小。
2026-08-22 14:53:15
192
原创 31 k个一组翻转链表
给你链表的头节点head,每k个节点一组进行翻转,请你返回修改后的链表。k是一个正整数,它的值小于或等于链表的长度。如果节点总数不是k的整数倍,那么请将最后剩余的节点保持原有顺序。你不能只是单纯的改变节点内部的值,而是需要实际进行节点交换。输入:head = [1,2,3,4,5], k = 2输出:[2,1,4,3,5]输入:head = [1,2,3,4,5], k = 3输出:[3,2,1,4,5]链表中的节点数目为你可以设计一个只用O(1)额外内存空间的算法解决此问题吗?
2026-08-22 11:18:52
159
原创 30 两两交换链表中的节点
给你一个链表,两两交换其中相邻的节点,并返回交换后链表的头节点。你必须在不修改节点内部的值的情况下完成本题(即,只能进行节点交换)。
2026-08-22 11:14:12
204
原创 26 环形链表II
给定一个链表的头节点head,返回链表开始入环的第一个节点。如果链表无环,则返回null。如果链表中有某个节点,可以通过连续跟踪next指针再次到达,则链表中存在环。为了表示给定链表中的环,评测系统内部使用整数pos来表示链表尾连接到链表中的位置(如果pos是-1,则在该链表中没有环。pos,仅仅是为了标识链表的实际情况。链表。返回索引为 1 的链表节点链表中有一个环,其尾部连接到第二个节点。返回索引为 0 的链表节点链表中有一个环,其尾部连接到第一个节点。返回 null链表中没有环。
2026-08-15 17:58:05
141
原创 25 环形链表
给你一个链表的头节点head,判断链表中是否有环。如果链表中有某个节点,可以通过连续跟踪next指针再次到达,则链表中存在环。为了表示给定链表中的环,评测系统内部使用整数pos来表示链表尾连接到链表中的位置(索引从 0 开始)。pos。仅仅是为了标识链表的实际情况。如果链表中存在环,则返回true。否则,返回false。true链表中有一个环,其尾部连接到第二个节点。true链表中有一个环,其尾部连接到第一个节点。false链表中没有环。-1你能用O(1)(即,常量)内存解决此问题吗?
2026-08-15 16:58:36
132
原创 24 回文链表
给你一个单链表的头节点head,请你判断该链表是否为回文链表。如果是,返回true;否则,返回false。truefalse[1, 105]你能否用O(n)时间复杂度和O(1)空间复杂度解决此题?给你一个单链表的头节点head,请你判断该链表是否为回文链表。如果是,返回true;否则,返回false。truefalse[1, 105]你能否用O(n)时间复杂度和O(1)空间复杂度解决此题?
2026-08-15 16:25:28
211
原创 23 翻转链表
给你单链表的头节点head,请你反转链表,并返回反转后的链表。[2,1]head = [][]链表可以选用迭代或递归方式完成反转。你能否用两种方法解决这道题?
2026-08-15 16:01:44
223
原创 20 旋转图像
给定一个n×n的二维矩阵matrix表示一个图像。请你将图像顺时针旋转 90 度。你必须在旋转图像,这意味着你需要直接修改输入的二维矩阵。使用另一个矩阵来旋转图像。
2026-08-09 19:49:17
215
原创 19 螺旋矩阵
给你一个m行n列的矩阵matrix,请按照,返回矩阵中的所有元素。1、检查参数的合法性2、从头开始循环,遇到边界就转弯3、可以用额外的空间做标记,标记是否走过这个位置。4、标记一个当前行和当前列,以及上下左右的边界5、初始时当前行为0,当前列为0,上边界top是0,下边界bottom是m-1,左边界left是0,右边界right是n-16、开始循环往右循环,到右边界之后,转向下。当前行+1,当前列走到最后一列,上边界往下走一格。7、从上往下循环,一直走到底部。
2026-08-09 19:45:33
191
原创 18 矩阵置0
给定一个m x n的矩阵,如果一个元素为,则将其所在行和列的所有元素都设为。请使用算法O(mn)O(m + n)1、先判断一下参数是否合法2、创建一个vector<pair<int,int> > line用于存放数字为0的行和列3、循环一遍矩阵,记录零的个数,并将行和列存放在line中4、循环line数组,将里面的行和列取出,将对应的行列置0;
2026-08-09 19:41:41
201
原创 链表的基本原理和实现(C++版本)
/ C++版本(模板化)智能指针版本private:T data;public:// ... 插入、删除、查找等方法公开接口层面:提供了完整的操作方法集,包括:插入操作:push_front(头插)、push_back(尾插)、insert_at(指定位置插入)删除操作:pop_front(头删)、pop_back(尾删)、erase_at(指定位置删除)、clear(清空)访问操作:operator[](随机访问)、size()(获取长度)
2026-08-09 17:59:06
189
原创 17 缺失的第一个正数
给你一个未排序的整数数组nums,请你找出其中没有出现的最小的正整数。请你实现时间复杂度为O(n)并且只使用常数级别额外空间的解决方案。3范围 [1,2] 中的数字都在数组中。21 在数组中,但 2 没有。1最小的正数 1 没有出现。
2026-08-08 14:36:36
177
原创 16 除了自身以外数组的乘积
给你一个整数数组nums,返回 数组answer,其中answer[i]等于nums中除了nums[i]之外其余各元素的乘积。题目数据数组nums之中任意元素的全部前缀元素和后缀的乘积都在整数范围内。请且在O(n)时间复杂度内完成此题。输入: nums = [1,2,3,4]输出: [24,12,8,6]输入: nums = [-1,1,0,-3,3]输出: [0,0,9,0,0]输入数组answer[i]在整数范围内你可以在O(1)的额外空间复杂度内完成这个题目吗?
2026-08-08 10:16:00
176
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅