- 博客(14)
- 收藏
- 关注
原创 代码训练营D16:513. 找树左下角的值|112. 路径总和|106.从中序与后序遍历序列构造二叉树
本文总结了二叉树相关的三个算法题解。513题通过层序遍历找到最底层最左边的节点值;112题使用DFS判断是否存在路径和等于目标值,并给出了返回路径的扩展解法;106题提出根据中序和后序遍历序列构造二叉树的思路,但未给出具体实现。三个题目分别考察了二叉树的遍历、路径搜索和重构等基本操作,提供了层序和深度优先两种典型解法框架。
2026-03-05 02:19:04
49
原创 代码训练营D15:110. 平衡二叉树| 257. 二叉树的所有路径|404. 左叶子之和|222. 完全二叉树的节点个数
本文总结了4道二叉树相关算法题解:110题判断平衡二叉树,通过递归计算左右子树高度差;257题输出所有根到叶路径,优化了字符串传值问题;404题求左叶子之和,通过标记位识别左叶子;222题统计完全二叉树节点数,利用完全二叉树特性优化至O(log²n)复杂度。重点包括递归应用、回溯优化和完全二叉树性质利用,适合面试准备和算法练习。
2026-03-03 02:53:21
491
原创 代码训练营 D13:226. 翻转二叉树|101. 对称二叉树|104. 二叉树的最大深度|111. 二叉树的最小深度
本文介绍了二叉树相关的四个算法问题:1)226题翻转二叉树,通过递归交换左右子树实现;2)101题判断对称二叉树,递归比较左右子树镜像;3)104题求最大深度,递归计算左右子树深度取最大值;4)111题求最小深度,需注意必须到达叶子节点才结束递归。每个问题都给出了对应的C++代码实现,其中翻转和对称二叉树采用前序遍历,深度问题采用后序遍历。关键点在于理解递归终止条件和二叉树遍历顺序。
2026-03-01 23:35:49
218
原创 代码训练营D12:二叉树的遍历-前序中序后序|102. 二叉树的层序遍历
本文介绍了二叉树的三种遍历方式(前序、中序、后序)和层序遍历的实现方法。前序遍历顺序为根-左-右,中序为左-根-右,后序为左-右-根,均采用递归实现并通过引用传递优化性能。层序遍历使用BFS算法,通过队列实现,标准写法通过每次循环获取当前层节点数,确保分层处理。文章还对比了非标准写法和标准写法的差异,指出标准写法在99%情况下更优,能避免节点处理的不均衡问题。所有代码示例均采用C++实现,包含详细注释说明。
2026-02-28 03:49:03
274
原创 代码训练营 D11:150.逆波兰表达式求值|239. 滑动窗口最大值|347. 前 K 个高频元素
本文介绍了三道算法题的解法:1) 150.逆波兰表达式求值,使用栈结构处理后缀表达式;2) 239.滑动窗口最大值,通过单调队列实现线性时间复杂度求解;3) 347.前K个高频元素,比较了哈希表+排序和优先队列两种解法。其中逆波兰表达式利用栈进行数字存储和运算,滑动窗口问题通过维护递减队列获取最大值,前K高频元素问题展示了从O(nlogn)到更优解法的优化思路。这些题目涉及栈、队列等数据结构的典型应用场景。
2026-02-25 19:33:36
484
原创 代码训练营D10:232.用栈实现队列|225.用队列实现栈|20.有效的括号|1047. 删除字符串中的所有相邻重复项
本文总结了用栈实现队列、用队列实现栈的经典算法题解,以及相关C++ STL接口。232题使用双栈模拟队列操作,225题通过单队列循环实现栈功能。同时整理了std::stack和std::queue的核心API,包括构造函数、元素访问、容量查询和修改器等操作,并标注了时间复杂度及版本特性。这些实现需要熟练掌握栈和队列的标准操作,如push/pop/top等,并注意边界条件处理。
2026-02-24 15:58:02
840
原创 代码训练营D9:151.反转字符串中的单词|卡码网 55. 右旋字符串
本文介绍了两种字符串操作问题及解法。151题要求反转字符串中的单词顺序,提供两种方法:简单方法使用额外空间拼接单词,时间复杂度O(n);进阶方法通过三次反转(去空格、整体反转、单词反转)实现O(1)空间复杂度。卡码网55题要求右旋字符串,给出双端队列解法(O(n)空间)和数学解法(三次反转),后者无需额外空间。核心技巧都是通过巧妙运用反转操作实现字符串变换,数学解法尤其展现了如何通过局部与整体反转的组合达到目标效果。
2026-02-22 21:27:27
256
原创 代码训练营D8: 344.反转字符串|541. 反转字符串 II|卡码网54. 替换数字
本文介绍了三个字符串处理问题及解法:1) 344题要求原地反转字符数组,使用双指针交换首尾元素;2) 541题按规则反转字符串,每2k字符反转前k个,剩余不足k则全反转;3) 卡码网54题将字符串中的数字替换为"number",通过遍历原字符串构建新字符串。三个问题分别考察了双指针技巧、字符串分段处理和字符替换等基础算法能力,其中541题需要注意反转区间的边界条件,54题需处理ACM模式的输入输出。
2026-02-21 21:55:33
209
原创 代码训练营D7|454. 四数相加 II|383. 赎金信|15. 三数之和|18.四数之和
本文总结了四道数组相关的算法题解:454题通过哈希表优化四数相加问题,将复杂度降至O(n²);383题使用哈希表或数组统计字符频率判断赎金信可行性;15题采用双指针法寻找不重复的三数之和组合;18题在双指针基础上扩展为四数之和问题,注意处理大数溢出和去重。核心思路包括哈希表优化、双指针技巧以及排序预处理,适用于解决各类求和问题。
2026-02-20 21:25:55
606
原创 代码训练营D6|242. 有效的字母异位词|349. 两个数组的交集|202. 快乐数|1.两数之和
本文介绍了四道哈希表相关的算法题解。242题通过哈希表统计字符频率判断字母异位词;349题利用集合求两个数组的交集;202题使用哈希表检测快乐数是否进入循环;1题借助哈希表快速查找两数之和。四道题目均展示了哈希表在高效查找和去重方面的优势,涉及字符统计、集合运算、循环检测和数值匹配等典型应用场景,时间复杂度均为O(n)。
2026-02-18 23:07:05
199
原创 代码训练营D4 |24.两两交换链表中的节点|19. 删除链表的倒数第 N 个结点|142. 环形链表 II
本文总结了链表操作的三个经典问题解法:1) 两两交换链表节点采用递归法,每次处理两个节点;2) 删除倒数第N个节点使用虚拟头节点和双指针技巧;3) 检测环形链表入口通过Floyd判圈法,先找相遇点再调整指针速度定位入口。文章还提及链表相交问题的双指针解法,并建议通过类似题目(如寻找中点、检测环、快乐数等)巩固快慢指针技巧。关键点在于理解指针移动的数学关系,如a=kb-c的推导,通过多练习掌握这类问题的解决模式。
2026-02-18 01:19:29
658
原创 代码训练营D3:203. 移除链表元素|707.设计链表|206. 反转链表
本文总结了链表相关算法题的解法。203题通过创建虚拟头节点简化删除逻辑;707题详细实现了链表的各种操作,需要注意边界条件处理;206题提供了递归和迭代两种反转链表的方法,其中迭代法又分为新建链表和原地反转两种实现。重点在于理解链表节点间的指针操作,特别是反转时如何调整next指针指向。递归解法需要理清递归过程中的前驱后继关系,而迭代法更直观但容易混淆指针操作顺序。这些题目都体现了链表操作中虚拟头节点和双指针技巧的重要性。
2026-02-17 01:25:25
408
原创 代码训练营D2:209. 长度最小的子数组|59. 螺旋矩阵 II
本文介绍了两个算法题解:1)209题求最小长度子数组,使用滑动窗口法(时间复杂度O(n)),提供两种实现方式:状态机法和遍历右指针维护左指针法;2)59题螺旋矩阵生成,通过模拟顺时针填充过程实现,使用方向数组控制移动路径。两题均给出C++代码实现,前者重点考察双指针技巧,后者注重二维数组的遍历控制。
2026-02-16 01:01:17
258
原创 代码训练营D1 :704. 二分查找|27. 移除元素|977. 有序数组的平方
本文介绍了二分查找算法的两种实现方式。给定升序数组和目标值,算法需要在O(log n)时间内找到目标值下标或返回-1。第一种"左闭右闭"方法初始化边界包含所有元素,循环条件为L<=R,每次收缩边界到mid±1。第二种"左闭右开"方法初始化右边界为数组长度,循环条件为L<R,右边界收缩到mid。两种方法的关键区别在于边界处理:前者包含两端点,后者右端点不包含。代码示例展示了两种实现,并解释了各自边界条件的处理逻辑,帮助理解二分查找的核心思想。
2026-02-13 00:28:30
429
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅