自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(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

原创 git 项目管理

git是一个分布式的版本控制工具github是代码托管平台git。

2026-10-07 23:32:13 142

原创 45 二叉树的右视图

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

2026-09-28 01:03:25 139

原创 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

原创 38 翻转二叉树

递归遍历二叉树,交换他的左子树和右子树。,翻转这棵二叉树,并返回其根节点。给你一棵二叉树的根节点。

2026-09-25 17:13:08 236

原创 37 二叉树的最大深度

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

2026-09-25 17:08:34 205

原创 36 二叉树中序遍历

给定一个二叉树的根节点root,返回它的遍历。[1,3,2]root = [][]root = [1][1][0, 100]递归算法很简单,你可以通过迭代算法完成吗?

2026-09-25 17:00:25 232

原创 35 LRU缓存

的 LRU 实现。整体思路正确,但存在若干问题。

2026-09-25 15:32:03 240

原创 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

原创 29 删除链表的倒数第 N 个结点

给你一个链表,删除链表的倒数第n个结点,并且返回链表的头结点。

2026-08-22 10:21:26 182

原创 28 两数相加

将两个升序链表合并为一个新的链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。[][0]l2。

2026-08-19 21:21:08 203

原创 27 合并两个有序链表

将两个升序链表合并为一个新的链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。[][0]l2。

2026-08-18 22:32:26 229

原创 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

原创 22 相交链表

的输入如下(你设计的程序。

2026-08-15 15:47:26 228

原创 21 搜索二维矩阵

编写一个高效的算法来搜索m x n矩阵matrix中的一个目标值target。truefalse。

2026-08-09 20:32:28 157

原创 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

原创 redis中AOF 重写机制解析

AOF 重写 = 后台子进程 × (遍历内存 + 生成命令) + 重写缓冲区 × (记录增量) + 原子替换。

2026-08-08 11:17:19 265

原创 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

LRU缓存设计与实现,实现put和get操作均为O(1)时间复杂度

LRU缓存设计与实现,实现put和get操作均为O(1)时间复杂度

2026-09-25

C++封装的单链表操作,用于基本的学习

C++封装的单链表操作,用于基本的学习

2026-08-09

链表的基本原理和实现(C++版本)

链表的基本原理和实现(C++版本)

2026-08-09

主从复制机制中积压缓冲区的设计实现代码,外部零依赖,可以直接使用

主从复制机制中积压缓冲区的设计实现代码,外部零依赖,可以直接使用

2026-07-19

TCP网络收发缓冲区的设计与实现

实现代码

2026-06-07

HashTable源代码

代码

2026-06-06

HashTable.h

代码头文件

2026-06-06

HashTable.cpp

代码源文件

2026-06-06

空空如也

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

TA关注的人

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