- 博客(14)
- 收藏
- 关注
原创 力扣Hot100系列12(Java)——[二叉树]总结(中)(验证二叉搜索树,二叉搜索树中第k小的元素,二叉树的右视图,二叉树展开为链表)
本文记录了力扣Hot100中关于二叉树的四道题目解析,重点介绍二叉搜索树的验证和中序遍历查找第k小元素。验证二叉搜索树通过递归检查节点值是否在合法区间内实现,使用长整型避免溢出。查找第k小元素采用非递归中序遍历,通过栈模拟遍历过程,在访问节点时计数直到k=0。文中通过具体示例(如验证合法/非法BST、查找BST第5小元素)详细说明了算法执行流程和关键步骤判断逻辑。两种解法均体现了二叉树遍历的核心思想,具有O(n)时间复杂度和O(h)空间复杂度。
2026-01-12 14:28:22
758
原创 力扣Hot100系列11(Java)——[二叉树]总结(上)(二叉树的中序遍历,二叉树的最大深度,翻转二叉树,对称二叉树,求二叉树的直径,二叉树的层序遍历,将有序二叉树转换为二叉搜索树)
本文总结了力扣Hot100中关于二叉树的七道题目,重点介绍其中三道题的解法与示例。1. 二叉树的中序遍历:通过递归实现"左-根-右"的遍历顺序,示例展示了如何逐步处理节点并填充结果列表。2. 二叉树的最大深度:采用递归方法,比较左右子树深度并加1得到最终结果,示例详细说明了递归计算过程。3. 翻转二叉树:通过递归交换每个节点的左右子树实现翻转,示例演示了节点交换的完整流程。这些解法均采用递归实现,代码简洁高效,适合处理树形结构问题。
2026-01-10 17:49:35
1124
原创 力扣Hot100系列10(Java)——[链表]总结(下)(随机链表的复制,排序链表,合并k个升序链表,LRU缓存)
本文总结了力扣Hot100中关于链表的四道题目解法。首先介绍随机链表的深拷贝问题,通过哈希表缓存原节点与拷贝节点的映射关系,结合递归实现高效复制。其次讲解排序链表的归并排序解法,使用快慢指针找到中点后递归拆分合并。文章通过具体示例和代码注释详细解析了关键步骤,帮助理解哈希表去重、递归处理以及链表拆分合并等核心思想。这些解法均采用O(n)时间复杂度,兼顾效率与代码简洁性。
2026-01-07 17:03:03
888
原创 力扣Hot100系列9(Java)——[链表]总结(中)(两数相加,删除链表的倒数第N个节点,两两交换链表中的节点,K个一组翻转链表)
本文总结了力扣Hot100中关于链表的四道题目解法。以"两数相加"和"删除链表的倒数第N个节点"为例,详细介绍了关键解题思路:使用虚拟头节点处理边界情况,通过双指针技巧(快慢指针)定位目标节点。重点解析了Java中对象引用的工作机制,并通过具体示例展示了代码执行过程。这些解法体现了链表问题的常见处理模式,包括哨兵节点、进位处理、指针同步移动等技术要点。
2025-12-26 15:04:01
1373
原创 力扣Hot100系列8(Java)——[链表]总结(上)(相交链表,反转链表,回文链表,环形链表,环形链表||,合并两个有序链表)
本文聚焦力扣 Hot100 中的六道链表经典题目,包括相交链表、反转链表、回文链表、环形链表、环形链表 II 及合并两个有序链表。文章结构清晰,每道题均依次呈现题目描述、核心代码、关键步骤解析及实例演示,重点拆解了双指针法、虚拟头节点、链表反转等核心技巧,深入阐释了环形链表入口查找等涉及的数学原理,帮助读者理解各题解题逻辑与边界处理要点,为链表类题目解题提供了系统的思路与参考。
2025-12-24 18:43:43
1143
原创 力扣Hot100系列7(Java)——[矩阵]总结(矩阵置零,螺旋矩阵,旋转图像,搜索二维矩阵||)
本文总结了力扣Hot100中关于矩阵的四道题目解法。第一题"矩阵置零"通过标记行列后二次遍历实现原地置零;第二题"螺旋矩阵"通过四边界收缩法按顺时针顺序遍历矩阵元素。两题均采用双循环结构,前者使用布尔数组标记零元素位置,后者通过动态调整边界实现螺旋遍历。核心思路均通过巧妙控制遍历顺序和范围来解决问题,代码中配有详细注释说明关键步骤。
2025-12-22 17:21:46
958
原创 力扣Hot100系列6(Java)——[普通数组]总结(下)(除自身以外数组的乘积,缺失的第一个整数)
本文解析了力扣Hot100中两道数组相关题目。第一题"除自身以外数组的乘积"要求不使用除法,通过两次遍历(从左到右计算左侧乘积,从右到左结合右侧乘积)实现O(n)解法。第二题"缺失的第一个正整数"通过原地置换将数值k放到索引k-1的位置,再遍历查找第一个不匹配位置。两题均实现了O(n)时间复杂度和常数空间复杂度,展示了数组处理的高效技巧。
2025-12-20 15:06:00
1061
原创 力扣Hot100系列5(Java)——[普通数组]总结(上)(最大子数组和,合并区间,轮转数组)
本文总结力扣Hot100中关于普通数组的三道典型题目。1. 最大子数组和:采用动态规划,通过状态转移方程dp[i] = max(dp[i-1]+nums[i], nums[i])求解,初始值设为Integer.MIN_VALUE避免全负数情况。2. 合并区间:先按左端点排序,再遍历合并重叠区间,关键是比较当前区间与结果集最后一个区间的右端点。3. 轮转数组:通过三次反转实现高效旋转(整体反转→前k部分反转→剩余部分反转)。每个问题都配有代码实现、核心思路解析和示例说明,帮助理解解题关键。
2025-12-20 01:00:33
1139
原创 零基础学并发编程[第一章]----黑马JUC跟学版
本文摘要: 介绍了进程与线程的基础概念及区别,进程作为资源分配单位管理内存和IO,线程作为调度单位执行指令。对比了并发(单核交替执行)与并行(多核同时执行)的本质差异,强调并行是并发的子集。文中包含技术配置(JDK8、Lombok、Logback)和日志设置说明,并指出多线程在单核CPU下通过任务切换提升体验,多核CPU才可能真正提升效率。最后总结了IO操作对线程利用率的影响及优化方向。
2025-12-19 16:23:32
820
原创 力扣Hot100系列4(Java)——[子串]总结(和为K的子数组,滑动窗口最大值,最小覆盖子串)
本文介绍了力扣Hot100中关于子串的三道题目及其高效解法。有题解,步骤,关键理解和具体的示例帮助更好的理解
2025-12-17 18:00:00
1198
1
原创 力扣Hot100系列3(Java)——[滑动窗口]总结(无重复字符的最长子串,找到字符串中所有字母异位词)
本文记录力扣Hot100里面关于滑动窗口的两道题,包括常见解法和一些关键步骤理解,也有例子便于大家理解
2025-12-13 18:00:00
1046
原创 函数式编程学习(Java)
仅包含一个抽象方法的接口(可包含多个默认方法、静态方法、私有方法),推荐用注解标记(编译器会强制校验是否符合规范)。// 自定义函数式接口(单一抽象方法)// 唯一抽象方法// 给函数式接口赋值(后续用Lambda实现)// 调用抽象方法执行逻辑// HELLO函数式接口是基础:定义了「行为的类型」,是 Lambda 和方法引用的「载体」;Lambda 表达式是函数式接口的「简洁实现」:替代匿名内部类,直接表达行为逻辑;方法引用。
2025-12-12 21:12:25
948
原创 力扣Hot100系列2(Java)——[双指针]总结(移动0,盛最多水的容器,三数之和,接雨水)
本文总结了力扣Hot100中关于双指针的四道典型题目,重点分析了移动零和盛水容器两个问题。对于移动零问题,通过左右指针交换非零元素实现原地操作,保持元素顺序;盛水容器问题则利用双指针从两端向中间移动,通过比较高度计算最大容量。两种解法都体现了双指针在数组操作中的高效性,时间复杂度均为O(n)。文章通过具体示例逐步拆解算法执行过程,帮助理解指针移动策略和关键计算步骤。
2025-12-12 18:29:09
1278
原创 力扣Hot100系列1——[哈希]总结(两数之和,字母异位词分组,最长连续序列)
本文介绍了力扣Hot100中三道哈希相关的题目及解法: 两数之和:使用哈希表存储元素值和索引,遍历时查找目标差值,时间复杂度O(n)。关键步骤是通过哈希表快速查找补数。 字母异位词分组:利用排序后的字符串作为哈希键,将异位词分组存储。核心是对字符串排序生成统一键值,使用getOrDefault处理新老列表。 最长连续序列:先将所有数字存入哈希集合,然后寻找连续序列的起点,向后扩展计算长度。优化点在于跳过非起点的数字。 三题均利用了哈希结构快速查找的特性,将时间复杂度优化至O(n)级别。
2025-12-10 20:31:23
805
1
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅