Hot 100
文章平均质量分 90
夜斗小神社
Coding is magical!(打卡学习、分享心得——夜斗小神社)
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
【LeetCode 热题 100】(八)二叉树
二叉树递归问题解析 1. 中序遍历(94题) 方法:递归实现"左-根-右"遍历顺序 关键点: 递归终止条件:节点为null时返回 按顺序处理左子树、当前节点、右子树 时间复杂度:O(n),空间复杂度O(h)(树高) 2. 最大深度(104题) 方法:递归计算左右子树高度,取最大值+1 关键点: 空节点返回0 非空节点返回max(左高,右高)+1 时间复杂度:O(n),空间复杂度O(h) 3. 翻转二叉树(226题) 方法:递归交换每个节点的左右子树 关键点: 后序遍历:先处理子树再交换原创 2025-08-17 22:16:29 · 995 阅读 · 0 评论 -
【LeetCode 热题 100】(七)链表
**本文解析了两个经典链表问题的解法。相交链表问题采用双指针路径补偿法,通过让指针分别遍历两个链表来消除长度差,最终在交点或终点同步相遇,实现O(m+n)时间复杂度和O(1)空间复杂度。反转链表问题使用三指针迭代法,通过动态修改节点指向实现原地反转,同样保持O(n)时间复杂度和O(1)空间复杂度。两种解法均体现了链表问题中指针操作的精妙性,无需额外空间即可高效解决问题。原创 2025-08-11 22:20:18 · 994 阅读 · 0 评论 -
【LeetCode 热题 100】(六)矩阵
本文解析了两个矩阵操作算法:矩阵置零和螺旋矩阵遍历。 矩阵置零:通过标记法实现原地修改。使用行/列标记数组记录含0位置,第一次遍历标记,第二次遍历置零。时间复杂度O(mn),空间复杂度O(m+n)。示例展示了3x3矩阵的置零过程。 螺旋矩阵:采用边界收缩法模拟顺时针遍历。定义left/right/top/bottom四个边界,依次处理外圈后向内收缩。添加内圈条件避免重复遍历,时间复杂度O(mn)。通过3x3矩阵示例演示了完整的螺旋遍历过程。 两个算法都体现了矩阵操作的典型思路:矩阵置零侧重标记和批量修改,螺原创 2025-08-09 16:20:11 · 1267 阅读 · 0 评论 -
【LeetCode 热题 100】(五)普通数组
摘要 最大子数组和(Kadane算法) 使用动态规划解决最大连续子数组和问题: 定义pre记录以当前元素结尾的最大和,ans记录全局最大值 遍历时比较"从当前元素重新开始"或"延续前序子数组"两种选择 时间复杂度O(n),空间复杂度O(1) 示例:数组[-2,1,-3,4,-1,2,1]最大和为6(子数组[4,-1,2,1]) 合并区间算法 通过排序和线性扫描合并重叠区间: 先按区间左端点排序 遍历时比较当前区间与已合并区间,决定合并或新建区间 时间复杂度O(n lo原创 2025-08-09 14:25:02 · 651 阅读 · 0 评论 -
【LeetCode 热题 100】(四)子串
本文介绍了使用前缀和与哈希表统计和为K的子数组数量的高效算法。通过维护前缀和与哈希表(记录各前缀和出现次数),算法在O(n)时间内解决问题:遍历时计算当前前缀和pre,检查哈希表中是否存在pre-k的键,存在则累加对应值到结果。初始化时需设置map.put(0,1)以处理从数组起始开始的子数组。该方法相比暴力解法显著优化了时间复杂度,适用于含正负数的数组,且可扩展解决子数组长度、乘积等变种问题。示例展示了nums=[1,1,1],k=2时如何正确统计出两个有效子数组的过程。原创 2025-08-02 22:46:50 · 373 阅读 · 0 评论 -
【LeetCode 热题 100】(三)滑动窗口
滑动窗口算法精要 无重复字符最长子串 使用双指针维护滑动窗口,HashSet存储当前字符 左指针移动时移除左侧字符,右指针扩展至重复字符 时间复杂度O(n),空间复杂度O(字符集大小) 示例:s="pwwkew" → 最长"wke"(长度3) 字母异位词查找 固定长度滑动窗口匹配字符频率 双频率数组统计字符出现次数 窗口滑动时更新频率:移除左边界,添加右边界 时间复杂度O(n),空间复杂度O(1) 示例:s="abab", p="ab&q原创 2025-08-02 18:25:14 · 942 阅读 · 0 评论 -
【LeetCode 热题 100】(二)双指针
解题思路摘要 移动零:通过双指针法,左指针标记非零元素位置,右指针遍历数组。遇到非零元素时交换到左指针位置,保证所有零被移动到末尾。时间复杂度O(n),空间复杂度O(1)。 盛水最多的容器:使用双指针从数组两端向中间扫描,每次移动较短的边并计算当前面积,更新最大值。确保在O(n)时间内找到最大容量,空间复杂度O(1)。 三数之和:先排序数组,固定一个数后转化为两数之和问题。使用双指针寻找满足条件的组合,通过跳过重复元素避免重复解。时间复杂度O(n²),空间复杂度O(1)或O(n)(取决于排序实现)。原创 2025-07-29 18:02:34 · 966 阅读 · 0 评论 -
【LeetCode 热题 100】(一)哈希
128. 最长连续序列 - 摘要 解题思路: 使用哈希集合存储所有数字,遍历集合中的每个元素,寻找连续序列的起始点(即当前数字的前驱不在集合中),然后向后统计连续序列长度。通过跳过非起始点优化效率,确保算法时间复杂度为 O(n)。 关键步骤: 将所有数字存入哈希集合(O(1) 查询) 遍历集合,当 num-1 不存在时,以 num 为起点向后扩展连续序列 更新全局最大长度 max_long 优化点: 仅对序列起始点进行扩展,避免重复计算 哈希集合去重,减少无效操作 复杂度: 时间:O(n)(每个元素最多被访原创 2025-07-28 21:38:18 · 1282 阅读 · 0 评论
分享