自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 38 翻转二叉树

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

2026-09-25 17:13:08 171

原创 37 二叉树的最大深度

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

2026-09-25 17:08:34 152

原创 36 二叉树中序遍历

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

2026-09-25 17:00:25 164

原创 35 LRU缓存

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

2026-09-25 15:32:03 72

原创 LRU缓存设计与实现

答:哈希表提供 O(1) 的 key 定位,双向链表在持有节点指针的前提下提供 O(1) 的删除和插入。两个操作合起来,get和put都是常数时间。

2026-09-25 15:28:11 92

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

原创 34 合并K个升序链表

请你将所有链表合并到一个升序链表中,返回合并后的链表。给你一个链表数组,每个链表都已经按升序排列。将它们合并到一个有序链表中得到。

2026-09-13 13:51:20 76

原创 33 链表排序

给你链表的头结点head,请将其按排列并返回。[1,2,3,4]head = [][]你可以在O(n log n)时间复杂度和常数级空间复杂度下,对链表进行排序吗?

2026-09-13 13:10:42 224

原创 32 随机链表的复制

给你一个长度为n的链表,每个节点包含一个额外增加的随机指针random,该指针可以指向链表中的任何节点或空节点。构造这个链表的。深拷贝应该正好由n个节点组成,其中每个新节点的值都设为其对应的原节点的值。新节点的next指针和random指针也都应指向复制链表中的新节点,并使原链表和复制链表中的这些指针能够表示相同的链表状态。。例如,如果原链表中有X和Y两个节点,其中。那么在复制链表中对应的两个节点x和y,同样有。返回复制链表的头节点。用一个由n个节点组成的链表来表示输入/输出中的链表。

2026-08-31 22:12:05 228

原创 linux操作系统概述

操作系统,简称OS(Operation System),是介于计算机硬件与应用程序之间的一层核心系统软件。操作系统负责管理计算机的所有硬件资源,包括CPU、内存、硬盘、网卡等,并负责将它们合理、高效、公平地分配给不同的应用程序,防止它们之间互相冲突。管理与抽象。

2026-08-29 17:38:24 203

原创 RDB持久化功能详解

RDB(Redis Database)是一种二进制格式的快照持久化方案,将内存数据库在某一时刻的完整状态保存到磁盘文件中。相比AOF(Append Only File),RDB文件更紧凑、恢复速度更快,特别适合做备份和灾难恢复。特性说明二进制格式紧凑高效,可跨版本兼容全量快照保存某一时刻的完整数据状态快速恢复直接加载二进制文件,无需重放命令后台保存通过fork()实现,不阻塞主进程文件紧凑相比AOF文件更小。

2026-08-22 14:53:15 185

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

原创 30 两两交换链表中的节点

给你一个链表,两两交换其中相邻的节点,并返回交换后链表的头节点。你必须在不修改节点内部的值的情况下完成本题(即,只能进行节点交换)。

2026-08-22 11:14:12 202

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

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

2026-08-22 10:21:26 181

原创 28 两数相加

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

2026-08-19 21:21:08 200

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

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

原创 23 翻转链表

给你单链表的头节点head,请你反转链表,并返回反转后的链表。[2,1]head = [][]链表可以选用迭代或递归方式完成反转。你能否用两种方法解决这道题?

2026-08-15 16:01:44 221

原创 22 相交链表

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

2026-08-15 15:47:26 225

原创 21 搜索二维矩阵

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

2026-08-09 20:32:28 156

原创 20 旋转图像

给定一个n×n的二维矩阵matrix表示一个图像。请你将图像顺时针旋转 90 度。你必须在旋转图像,这意味着你需要直接修改输入的二维矩阵。使用另一个矩阵来旋转图像。

2026-08-09 19:49:17 211

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

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

原创 链表的基本原理和实现(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 187

原创 17 缺失的第一个正数

给你一个未排序的整数数组nums,请你找出其中没有出现的最小的正整数。请你实现时间复杂度为O(n)并且只使用常数级别额外空间的解决方案。3范围 [1,2] 中的数字都在数组中。21 在数组中,但 2 没有。1最小的正数 1 没有出现。

2026-08-08 14:36:36 176

原创 redis中AOF 重写机制解析

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

2026-08-08 11:17:19 262

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

原创 15 轮转数组

给定一个整数数组nums,将数组中的元素向右轮转k个位置,其中k是非负数。向右轮转 1 步:向右轮转 2 步:向右轮转 3 步:向右轮转 1 步: [99,-1,-100,3]向右轮转 2 步: [3,99,-1,-100]O(1)

2026-08-08 10:01:10 227

原创 12 最小覆盖子串

1、创建两个哈希表,将t的字符作为键,每个字符出现的次数作为值unordered_map<char,int> ,一个用于存放t的字符,一个用于动态更新s的字符。3、判断s字符串的哈希表是否全部包含t字符串的哈希表,如果包含那就持续收缩左边界的窗口,判断最小长度包含t字符串哈希表的字符串。最小覆盖子串 "BANC" 包含来自字符串 t 的 'A'、'B' 和 'C'。2、将t的字符存入哈希表,循环s字符串建立滑动窗口,加入哈希表中。1、循环s字符串判断前,遇到在的字符在t字符串中不包含时直接跳过。

2026-08-02 11:13:47 201

原创 14 合并区间

示例 1:输入:intervals = [[1,3],[2,6],[8,10],[15,18]] 输出:[[1,6],[8,10],[15,18]] 解释:区间 [1,3] 和 [2,6] 重叠, 将它们合并为 [1,6]. 示例 2:输入:intervals = [[1,4],[4,5]] 输出:[[1,5]] 解释:区间 [1,4] 和 [4,5] 可被视为重叠区间。

2026-08-02 10:25:40 238

原创 13 最大子数组和

定义一个左指针和右指针,左指针指向窗口开始的位置,右指针指向窗口结束的位置。1、核心思想就是定义窗口累加,如果当前累加值是负数,那么累加清零(),窗口从下一个数开始,从下一个数开始累加。3、进入循环,将右指针加入窗口,计算窗口和,对比窗口和与NumMax谁更大,NumMax记住最大的值。6、假如当前窗口和加上下一个数字更大,那么right继续往前走,计算窗口和。输入:nums = [-2,1,-3,4,-1,2,1,-5,4]解释:连续子数组 [4,-1,2,1] 的和最大,为 6。

2026-08-01 12:42:04 241

原创 vector动态数组

动态数组就是由用户申请的一块连续的动态内存,封装了相关的操作接口之后就成了vector。

2026-07-25 18:09:20 143

原创 11 滑动窗口最大值

1、创建一个大小为k的大顶堆,用pair<int,int>构建元素,第一个是数组的值,第二个是数组的下标。创建两个指针,left=0、right=k-1,把指针中间的数字先加入大顶堆,创建临时的vector用于存放最大值。2、从堆顶拿一个元素,判断这个元素的下标是否是在left和right之间的,是则将元素放入答案中,否则将这个堆顶元素删除,继续获取堆顶元素,循环判断。的滑动窗口从数组的最左侧移动到数组的最右侧。3、循环结束条件right要大于数组的下标时,结束循环。不支持随机访问,所以不行)。

2026-07-25 16:05:17 173

原创 10 和为k的子数组

给你一个整数数组nums和一个整数k,请你统计并返回该数组中和为k的子数组的个数。子数组是数组中元素的连续非空序列。22滑动窗口1、检查参数的合法性2、循环数组nums,从0到nums.size()-1,记下标为i,定义满足次数的变量_count=0。3、循环下标i到0的累加和,nums[i]+nums[i-1]、nums[i]+nums[i-1]+nums[i-2]....... nums[i+nums[i-1]+nums[i-2]+nums[0]。判断累加和是否有满足和等于k的。

2026-07-25 14:00:09 235

原创 kv存储主从复制的设计与实现

为了维持一致,命令传播机制会像一个单向的管道,将主节点上执行的、会改变数据的命令,持续不断地发送给所有已连接的从节点。此时,主节点会主动从积压缓冲区中找到这些缺失的命令,并重新发送给从节点,从而保证了数据的最终一致性。为了应对从节点可能发生的短暂断线,Redis 在命令传播的同时,会将所有写命令也写入一个由主节点维护的 复制积压缓冲区(Replication Backlog) 中。的,这意味着主节点在执行完写命令后立即返回客户端结果,无需等待从节点确认,这保证了主节点的高性能。

2026-07-25 13:47:05 337

原创 9 找到字符串中所有字母异位词

给定两个字符串s和p,找到s中所有p的的子串,返回这些子串的起始索引。不考虑答案输出的顺序。[0,6]起始索引等于 0 的子串是 "cba", 它是 "abc" 的异位词。起始索引等于 6 的子串是 "bac", 它是 "abc" 的异位词。[0,1,2]起始索引等于 0 的子串是 "ab", 它是 "ab" 的异位词。起始索引等于 1 的子串是 "ba", 它是 "ab" 的异位词。起始索引等于 2 的子串是 "ab", 它是 "ab" 的异位词。p。

2026-07-22 23:26:54 207

原创 8 无重复字符的最长子串

请注意,你的答案必须是 子串 的长度,"pwke" 是一个子序列,不是子串。6、在hash表中从左指针到pos的位置的元素删除(或者使用墓碑标记),修改该key值的value=pos,左指针指向pos的位置,右指针继续向前right++,直到右指针指向数组的末尾。4、开始循环右指针往前走,每遇到一个元素查询一下hash中是否有重复的元素,假如没有就往hash中插入一个元素,key为数组的值,value为元素的下标。记录此时hash的长度和len_max比较谁更大,用len_max记录下来。

2026-07-22 23:03:05 227

原创 7 接雨水

2、每一格中能装多少水取决于他左边最高的格子和右边最高的格子,假设为left和right。上面是由数组 [0,1,0,2,1,0,1,3,2,1,2,1] 表示的高度图,在这种情况下,可以接 6 个单位的雨水(蓝色部分表示雨水)。3、循环找到数组中每一格的len,先创建一个存放左边最高格子的数组,再创建一个右边最高格子的数组。4、计算每一格的储水量,value=len-本身格子的高度,然后所有容量相加。的柱子的高度图,计算按此排列的柱子,下雨之后能接多少雨水。1、判断参数的合法性。

2026-07-20 13:30:10 135

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关注的人

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