自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 代码随想录算法训练营第十四天 | 101. 对称二叉树 226. 翻转二叉树

本文总结了二叉树常见问题的Python解法:1) 判断对称二叉树通过递归比较左右子树;2) 翻转二叉树通过交换左右节点并递归处理;3) 最大深度计算递归求左右子树最大深度加1;4) 最小深度需注意处理单边子树情况,遇到叶子节点即返回。这些问题都采用递归方法解决,时间复杂度为O(n),空间复杂度最坏O(n)。

2025-09-22 21:13:29 183

原创 代码随想录算法训练营第十三天 | 二叉树的递归遍历 层序遍历

本文展示了二叉树遍历的多种Python实现方案。前序、中序、后序遍历采用递归DFS方法,代码结构相似但节点访问顺序不同。层序遍历使用BFS队列实现,衍生出多种变体:自底向上层序(107)、右视图(199)、层平均值(637)、每层最大值(515)等。N叉树层序遍历(429)和填充节点指针(116)展示了BFS在更复杂场景的应用。所有解法均遵循O(n)时间复杂度,其中BFS解法通常需要额外空间存储队列。这些模板可灵活应用于各类树结构遍历问题。

2025-09-22 21:02:52 109

原创 代码随想录算法训练营第十一天 | 150. 逆波兰表达式求值 239. 滑动窗口最大值 347.前 K 个高频元素

这篇文章分享了三个算法题的Python解法:1. 逆波兰表达式求值,使用栈结构处理运算符;2. 滑动窗口最大值,通过双端队列维护最大值索引;3. 前K个高频元素,提供调库和堆排序两种实现。每个问题都包含核心代码和简要思路说明,涵盖了栈、队列、堆等数据结构的基本应用。

2025-09-17 18:20:14 161

原创 代码随想录算法训练营第十天 | 232.用栈实现队列 225. 用队列实现栈 20. 有效的括号 1047. 删除字符串中的所有相邻重复项

本文展示了四个栈和队列相关的经典算法题解。1) 用两个栈实现队列;2) 用两个队列实现栈;3) 有效的括号匹配;4) 删除字符串中的相邻重复项。每个问题都给出了Python实现,通过辅助数据结构(如双栈、双队列)和栈的特性(后进先出)来解决问题。其中括号匹配和相邻重复项删除都利用了栈的LIFO特性进行字符匹配和消除,体现了栈在解决对称性和重复性问题上的优势。这些题目常见于面试和考研中,考察对基础数据结构的理解和应用能力。

2025-09-17 18:10:31 174

原创 代码随想录算法训练营第九天 | 151.翻转字符串里的单词 卡码网:55.右旋转字符串 28. 实现 strStr()

本文分享了四个字符串处理问题的Python解法:1.翻转字符串单词顺序,通过分割后反转列表实现;2.右旋转字符串,直接切片拼接;3.实现strStr()函数,使用KMP算法;4.判断重复子字符串,利用KMP的next数组特性。其中重点解析了KMP算法的实现原理,包括构建next数组和模式匹配过程。对于字符串处理,文章展示了从简单分割到复杂模式匹配的不同方法,特别强调了KMP算法在字符串匹配中的高效性及其扩展应用。

2025-09-16 18:50:19 118

原创 代码随想录算法训练营第八天 | 344.反转字符串 541. 反转字符串II 卡码网:54.替换数字

本文包含三个字符串操作题解:1.反转字符串(344题)使用双指针原地交换;2.反转字符串II(541题)每隔2k个字符反转前k个;3.替换数字(卡码网54题)将数字替换为"number"。代码简洁高效,均采用Python实现。

2025-09-16 15:26:25 377

原创 代码随想录算法训练营第七天 | 454.四数相加II 383. 赎金信 15. 三数之和 18. 四数之和

本文分享了四道数组相关问题的解法:1) 四数相加II通过哈希表统计前两数组和后两数组的和组合;2) 赎金信使用Counter判断字符包含关系;3) 三数之和采用排序加双指针法,避免重复解;4) 四数之和在哈希表基础上增加循环,处理更复杂的组合情况。这些解法展示了不同场景下哈希表、双指针等技巧的应用,体现了算法设计中根据问题特点选择合适方法的重要性。

2025-09-09 18:49:45 182

原创 代码随想录算法训练营第六天 | 242.有效的字母异位词 349. 两个数组的交集 202. 快乐数 1. 两数之和

本文总结了使用哈希法解决四道经典算法题的思路:1. 242题通过统计字母频率判断异位词;2. 349题利用集合求交集;3. 202题用集合检测快乐数循环;4. 1题通过存储差值快速查找两数之和。每道题都提供了Python实现,展示了哈希表在快速查找中的高效应用。

2025-09-08 19:38:37 131

原创 代码随想录算法训练营第四天 | 24. 两两交换链表中的节点 19.删除链表的倒数第N个节点 面试题 02.07.链表相交 142.环形链表II

本文总结了链表常见操作的Python实现,包括节点交换、删除倒数第N个节点、链表相交判断和环形链表检测。通过虚拟节点、快慢指针等技巧,提供了简洁高效的解决方案。其中两两交换节点使用虚拟头节点辅助,删除倒数节点采用快慢指针法,链表相交问题通过双指针交替遍历实现,环形链表检测则结合快慢指针和同步指针定位环起点。这些方法充分体现了链表操作的指针技巧和算法优化思想。

2025-09-06 17:32:09 132

原创 代码随想录算法训练营第三天 | 203.移除链表元素 707.设计链表 206.反转链表

文章摘要:本文介绍了链表相关算法的实现,首先是设计链表类,包括初始化、获取节点值、在头部/尾部/指定位置插入节点以及删除节点等方法。接着展示了移除链表元素和反转链表的实现:移除元素通过虚拟头节点遍历删除;反转链表则使用双指针法,通过保存前驱节点和临时节点完成反转。这些基础操作体现了链表的核心处理逻辑,为后续更复杂的链表问题打下基础。

2025-09-05 17:19:45 425

原创 代码随想录算法训练营第二天 | 209.长度最小的子数组 区间和 开发商购买土地

本文介绍了滑动窗口和前缀和算法在解决数组/矩阵问题中的应用。通过三个例题展示了滑动窗口的典型用法:求最小长度子数组、水果种类限制问题,以及如何用前缀和优化区间和查询。最后通过土地分割问题展示了二维前缀和的应用,核心思想都是通过预处理减少重复计算,将时间复杂度从O(n^2)优化到O(n)或O(1)。关键点在于维护窗口状态或预处理前缀和数组,从而避免暴力解法的高时间复杂度。

2025-09-04 18:00:22 130

原创 代码随想录算法训练营第一天 | 704.二分查找 27. 移除元素 977. 有序数组的平方

这篇文章系统梳理了几个经典算法题的解法,主要包括: 二分查找(704题)- 使用左闭右闭区间写法,注意边界条件处理 移除元素(27题)- 双指针解法,通过快慢指针原地修改数组 有序数组平方(977题)- 提供直接排序和双指针两种解法 合并有序数组(88题)- 从后向前比较的双指针解法 文章代码示例清晰,展示了不同算法的实现要点,特别是对双指针技巧的多次应用演示。每个题目都标注了原题链接,便于读者进一步练习。

2025-09-03 16:07:16 434

空空如也

空空如也

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

TA关注的人

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