自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 双指针题解——反转字符串【LeetCode】

使用双指针从两端向中间逐步交换字符,实现原地反转。✅ 原地操作,空间效率高;✅ 每次只交换两个字符,简单直接;✅ 适用于字符串、数组等序列类型的反转模板。""""""left = 0left += 1right -= 1return s本算法通过双指针原地交换的方式,在 O(n) 时间、O(1) 空间内高效完成字符串反转,是序列处理中最经典、通用的技巧之一。

2025-07-02 09:35:27 41

原创 二叉树题解——对称二叉树【LeetCode】

dfs(p, q)比较两个节点p和q代表的子树是否对称。将树的“对称性”问题转化为“两个子树是否镜像”的判断,并使用递归双指针同步对比两棵子树的结构与值。✅ 双指针pq分别走向左、右子树的“对称位置”;✅ 比较顺序是 “左对右,右对左”,从而形成“镜像”判定;✅ 本质是结构和数值都一致的镜像匹配问题。if not (p or q): # 都是空节点if not (p and q): # 只有一个为空,不对称if p.val!= q.val: # 值不等,不对称# 递归判断:左对右,右对左。

2025-07-02 00:30:00 212

原创 二叉树题解——翻转二叉树【LeetCode】

整个算法从叶子节点向上,逐步完成左右子树的交换。每个节点都做“翻转自己的左右子树”这一件事,由递归统一调度,最终完成整棵树的翻转。这段代码的核心思想是:使用后序遍历的递归方式,自底向上交换每个节点的左右子树。✅ 后序遍历是关键:必须先处理完子树,再交换;✅ 每个节点只处理一次,处理内容就是“递归子树 + 左右互换”;✅ 属于结构清晰、直觉明确的树形递归模板。return root # 如果当前节点为空,直接返回# 递归翻转左子树和右子树# 交换左右子树# 返回翻转后的当前节点。

2025-07-02 00:15:00 195

原创 二叉树题解——二叉树的最大深度【LeetCode】两种方法实现

最大深度是指从根节点到最远叶子节点的最长路径上的节点数。递归地计算左右子树的最大深度,然后返回“更深的一侧 + 当前层”作为整体深度。这是一个典型的后序遍历问题,因为只有等左右子树处理完毕后,才能计算当前节点的高度。这两个递归实现都通过“后序遍历 + 层高累计”的方式求解二叉树最大深度。一个精简直接、一个易读明确,本质相同,都是标准的二叉树深度问题递归写法,时间和空间复杂度均为线性级别。每一轮 while 循环处理一层节点,处理完后就将深度 +1,最终的层数就是最大深度。

2025-07-01 13:27:18 645

原创 二叉树题解——二叉树的中序遍历【LeetCode】颜色标记法

通过颜色状态模拟递归流程,显式管理“节点处理的阶段”,从而完成中序遍历。相比传统的栈模拟或统一写法,它具有以下优势:✅ 清晰区分每个节点的处理阶段(未访问 / 待访问);✅ 适用于中序 / 前序 / 后序统一写法,仅需调整压栈顺序;✅ 可用于复杂场景(如前序+后序同时记录、构建表达式树等)。WHITE, GRAY = 0, 1 # 定义颜色常量res = [] # 结果列表stack = [(WHITE, root)] # 初始化栈,根节点以 WHITE 状态压入。

2025-07-01 13:18:16 233

原创 二叉树题解——二叉树的中序遍历【LeetCode】统一写法版本

将访问节点值与处理子节点的过程“解耦”,用类型判断区分是否“已展开”。✅ 借助栈顺序控制访问流程;✅ 用来判断当前栈元素是否是“待处理节点”;✅ 中序遍历通过压入[右子树, 当前值, 左子树]的顺序来模拟递归。这种技巧具有很高的统一性和可拓展性,适用于中序、前序、后序的迭代实现,只需要改变压栈顺序。stack, rst = [root], [] # 初始化栈和结果列表i = stack.pop() # 弹出栈顶元素# 按照中序遍历的顺序,将右子节点、节点值、左子节点依次压入栈。

2025-07-01 13:18:03 382

原创 cur.next.val == val 中的 .val 是什么意思?

是访问下一个链表节点中的数值,.val是链表节点类ListNode中的属性,不能省略。

2025-07-01 03:00:00 179

原创 链表题解——移除链表元素【LeetCode】

引入虚拟头节点,统一处理所有删除逻辑,避免特判头节点。✅ 哨兵节点消除了对头节点是否是目标值的特殊处理;✅ 通过操作cur.next删除下一个节点,避免在删除操作中提前丢失遍历控制;

2025-06-30 22:40:41 407

原创 链表题解——设计链表【LeetCode】

哨兵节点 + size记录 + 链式结构 + O(n)遍历插删是这类链表题目的核心构建思路。✅ 哨兵节点(dummy node)避免对头节点操作的特殊判断;✅ 使用size记录链表长度,快速判断边界合法性;✅ 所有插入、删除都通过“遍历到前一节点”来操作;✅ 遵循单链表结构特性,无随机访问能力。(版本一)单链表法return -1returnreturn这段代码通过使用哨兵头节点 + 封装常用操作 + 控制链表长度,使得链表插入、删除操作逻辑清晰简洁,是典型的单链表构建方式。

2025-06-30 22:33:10 665

原创 链表题解——两两交换链表中的节点【LeetCode】

将问题局部化:只处理当前两个节点,其余部分交给递归;天然递归拼接结构:每一对交换完成后,通过递归返回值自然连接;思路简洁清晰:每次递归都只处理“两两交换”这个最小问题单元。“局部交换 + 递归合并”。# 递归版本if head is None or head.next is None: # 递归边界return head # 不足两个节点,无需交换node1.next = self.swapPairs(node3) # 1 指向递归返回的链表头。

2025-06-30 22:29:25 835

原创 链表题解——删除链表的倒数第 N 个结点【LeetCode】

✅双指针+间距:让快指针先走n+1步,再同步前进,从而让慢指针精确指向倒数第n个节点的前一个节点。✅虚拟头节点:极大地简化了链表头节点被删除时的边界处理。✅一次遍历完成删除操作:只需一趟扫描,不需要先获取链表长度,节省效率。# 创建一个虚拟节点,并将其下一个指针设置为链表的头部# 创建两个指针,慢指针和快指针,并将它们初始化为虚拟节点# 快指针比慢指针快 n+1 步# 移动两个指针,直到快速指针到达链表的末尾# 通过更新第 (n-1) 个节点的 next 指针删除第 n 个节点。

2025-06-29 15:54:45 375

原创 链表题解——环形链表 II【LeetCode】

该算法通过快慢指针的相遇与数学性质,在线性时间和常数空间下找出链表环的入口节点,核心在于“环形追赶+数学推导。

2025-06-29 15:38:02 847

原创 链表题解——回文链表【LeetCode】

该算法巧妙地结合了快慢指针、链表反转和双指针比较,在线性时间和常数空间下高效判断链表是否为回文。核心在于利用快慢指针找到中点 + 原地反转链表来规避额外空间使用。方式是否可行空间复杂度是否破坏链表结构是否高效整体反转 + 比较原链表❌ 不可行O(n) or 破坏原链表会破坏结构否复制一份 + 反转副本 + 比较✅ 可行O(n)不破坏否当前解法(快慢指针+反转后半段)✅ 优秀解O(1)前半结构保留是 ✔️。

2025-06-29 11:16:13 713

原创 数据库左连接与右连接的区别

特性LEFT JOINRIGHT JOIN保留数据的主表左表(FROM 后面的表)右表(JOIN 后面的表)未匹配记录的处理右表字段为 NULL左表字段为 NULL数据完整性关注点关注左表中的全部数据关注右表中的全部数据常见用途示例获取所有玩家及其充值信息(即使没充值)获取所有充值记录及其玩家信息(即使玩家被删除)

2025-06-28 23:38:00 305

原创 Linux软连接和硬连接

类型软连接(Symbolic Link)硬连接(Hard Link)本质类似于 Windows 的“快捷方式”是文件的另一个名字(指向同一个 inode)存储方式独立文件,存储目标文件的路径直接指向原文件的 inode(数据块)跨分区支持✅ 支持(路径可跨磁盘)❌ 不支持(必须同一文件系统)原文件删除软连接失效(变成“死链”)硬连接仍可访问文件数据文件属性权限始终是 (实际权限依赖原文件)权限与原文件相同文件系统结构示例:3. 命令对比 操作软连接硬连接创建查看显示链接路

2025-06-28 23:36:44 316

原创 链表题解——两数相加【LeetCode】

该实现采用逐位处理两个链表,并考虑。

2025-06-27 16:45:36 480

原创 矩阵题解——螺旋矩阵 II【LeetCode】

【代码】【无标题】

2025-06-27 00:45:00 250

原创 矩阵题解——搜索二维矩阵 II【LeetCode】

1.1 核心思想

2025-06-27 00:45:00 363

原创 矩阵题解——旋转图像【LeetCode】

【代码】矩阵题解——旋转图像【LeetCode】

2025-06-26 00:45:00 332

原创 矩阵题解——螺旋矩阵【LeetCode】

【代码】矩阵题解——螺旋矩阵【LeetCode】

2025-06-25 19:50:26 413

原创 矩阵题解——矩阵置零【LeetCode题解】

【代码】矩阵题解——矩阵置零【LeetCode题解】

2025-06-25 19:31:59 298

原创 数组题解——二分查找【LeetCode】

【代码】数组题解——二分查找【LeetCode】

2025-06-25 19:26:49 360

原创 数组题解——最长回文子串【LeetCode】

这样奇偶合并成一段代码,逻辑更紧凑。

2025-06-24 20:28:14 146

原创 数组题解——​合并区间【LeetCode】

时间复杂度分析 排序:时间复杂度为 O(n log n),其中 是区间的数量。 遍历合并:时间复杂度为 O(n)。 总时间复杂度为 O(n log n)。 空间复杂度分析 使用了额外的列表 存储结果,空间复杂度为 O(n)。

2025-06-24 19:56:04 176

原创 数组题解——移除元素​【LeetCode】

【代码】数组题解——移除元素​【LeetCode】

2025-06-24 19:21:57 336

原创 数组题解——​除自身以外数组的乘积【LeetCode】

【代码】数组题解——​除自身以外数组的乘积【LeetCode】

2025-06-24 13:45:12 270

原创 双指针题解——盛最多水的容器【LeetCode】

给定一个非负整数数组height,每个元素代表一个垂直线段的高度。找出其中任意两个线段和 x 轴构成的容器,。

2025-06-24 13:44:09 569

原创 数组题解——​轮转数组【LeetCode】

反思:树立数组的思想,看到数组元素的,将他们想成一个整体来看,不要只想着他们是一个一个元素。

2025-06-23 20:16:41 238

原创 数组题解——​最大子数组和​【LeetCode】(更新版)

【代码】数组题解——​最大子数组和​【LeetCode】(更新版)

2025-06-23 20:04:27 260

原创 哈希题解——有效的字母异位词【LeetCode】

导入defaultdict库来进行编写。

2025-06-23 12:35:00 498

原创 滑动窗口题解——找到字符串中所有字母异位词【LeetCode】

两种方法:定长滑窗/不定长滑窗。

2025-06-23 12:34:47 666

原创 子串题解——和为K的子数组【LeetCode】

来高效地统计符合条件的子数组个数。代码的核心思想是通过。

2025-06-22 15:54:51 658

原创 哈希题解——字母异位词分组【LeetCode】

全部题目来自,这里只做学习的记录,内容中部分为AI生成,有不对的地方可以评论或者私信哦~~

2025-06-22 10:02:05 744

原创 哈希题解——最长连续序列【LeetCode】

O(n),其中 n 为数组的长度。具体分析已在上面正文中给出。哈希表存储数组中所有的数需要 O(n) 的空间。

2025-06-22 10:02:03 341

原创 作为测试人员,平时用什么大模型?怎么用?

平时用GPT多一点,更多是撰写技术文档,或者报告等,当然还会使用cluade,cursor这些ai编程工具来提效编程;同时作为测试人员,也会用来Ai生成一些基础的功能性测试的用例编写。

2025-06-21 23:58:43 505

原创 如何处理开发不认可测试发现的问题

通过这种系统性的处理方法,既能确保问题得到合理解决,又能维护团队协作关系。

2025-06-21 23:55:00 302

原创 OSI 七层模型详解&TCP 滑动窗口机制

将通信过程抽象为七个功能层级,有助于网络协议设计和系统互操作性。接收方告知发送方其“下一个期望收到的序号”,表示前序数据已收到。接收方可接受的剩余数据量(由接收方通知发送方,单位:字节)依据接收方“承载能力”动态调整发送速率,防止数据丢失。每个方向均可独立维护滑动窗口(A→B 与 B→A)建立、管理、终止会话;端到端数据传输、差错恢复、流量控制。HTTP、FTP、浏览器、微信。数据格式转换、加密、解密、压缩。路由选择、逻辑寻址(IP地址)物理地址寻址、帧同步、差错检测。网线、光纤、集线器、网卡。

2025-06-20 23:47:50 771

原创 死锁相关知识

测试人员发现这种情况后,要重点看线程堆栈、日志锁等待记录,并配合开发定位原因。此时两个线程都在等待对方释放资源,谁也无法继续执行,程序就卡死了,这就是死锁。只要这四个条件都成立,系统就可能出现死锁。,导致永远无法继续执行的状态。

2025-06-19 23:15:24 282

原创 输入url之后发生了什么

的精密协作过程,涉及网络各层协议协同工作。Web服务器(Nginx/Apache)TLS/SSL (如RSA/AES)HTTP/1.1 或 HTTP/2。CDN (边缘节点缓存):从URL到页面展现,是。TCP (可靠传输)

2025-06-19 23:07:04 1026

原创 MySQL存储引擎深度解析:InnoDB、MyISAM、MEMORY 与 ARCHIVE 的全面对比与选型建议

MySQL 的多存储引擎机制为开发者提供了极大的灵活性,但这也意味着我们必须理解每种引擎的底层结构与优缺点。技术选型不是拍脑袋,而是结合业务需求、访问模式和系统架构做出的综合判断。💬欢迎留言讨论你在实际项目中对不同引擎的使用经验!

2025-06-18 23:50:32 794

空空如也

空空如也

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

TA关注的人

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