
算法日记
文章平均质量分 94
力扣,牛客网经典算法题目解析
重生之我是Java开发战士
2024级网络工程学生,利用博客记录日常学习,梦想是成为Java开发工程师。颤抖吧!JVM!
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
【算法日记】二叉树经典算法:转换双向链表,层序遍历,找公共祖先,构建二叉树
本文介绍了三个二叉树相关算法题目的解题思路与代码实现。1. 二叉搜索树转双向链表(BM30):通过中序遍历调整指针指向,要求空间复杂度O(1),时间复杂度O(n);2. 二叉树遍历(KY11):根据先序字符串构建二叉树并进行中序遍历,处理特殊字符'#'表示空节点;3. 二叉树的层序遍历(LC102):使用队列实现广度优先搜索,按层输出节点值。每个问题都提供了详细的分析图示和Java代码示例,重点讲解了递归、队列等核心数据结构的应用技巧,以及处理树结构时的关键注意事项。原创 2025-10-05 04:42:41 · 1171 阅读 · 0 评论 -
【算法日记】二叉树经典算法:判断相同树和子树,翻转二叉树,平衡二叉树,对称二叉树
本文介绍了二叉树相关问题的解法,包括判断相同的树(LC100)、子树判断(LC572)、翻转二叉树(LC226)、平衡二叉树(LC110)和对称二叉树(LC101)。每道题都给出了题目描述、解题思路和Java代码实现。关键点包括:递归判断树结构和节点值、利用相同树判断实现子树检查、前序遍历实现树翻转、优化高度计算判断平衡性,以及通过翻转子树判断对称性。这些解法展示了二叉树问题的常见处理模式,如递归遍历、结构比较和高度计算等。原创 2025-10-02 02:06:20 · 860 阅读 · 0 评论 -
【算法日记】栈与队列经典算法:括号匹配,逆波兰表达式,出入栈次序,循环队列
本文介绍了三个经典的栈相关问题及其解法: 括号匹配问题:通过栈结构判断字符串中的括号是否有效匹配,遇到左括号入栈,遇到右括号检查栈顶是否匹配,最终栈为空则有效。 逆波兰表达式求值:利用栈处理运算符和操作数,遇到数字压栈,遇到运算符则弹出栈顶两个元素计算后重新压栈,最后栈中剩余元素即为结果。 出栈顺序合法性:模拟入栈出栈过程,遍历压入序列并匹配弹出序列,最终栈为空则顺序合法。 每个问题都通过栈的先进后出特性高效解决,并附有详细的代码实现示例。原创 2025-09-24 13:36:26 · 1115 阅读 · 1 评论 -
【算法日记】链表经典问题解析:环形、回文与相交
本文介绍了四个经典链表问题的解法:1)判断环形链表使用快慢指针法;2)寻找环形链表入口节点需在快慢指针相遇后重新调整指针;3)判断回文链表需找到中点并反转后半部分比较;4)寻找相交链表需先对齐长度再同步遍历。每个问题都给出了清晰的思路分析和Java代码实现,重点运用了双指针技巧,时间复杂度均为O(n),空间复杂度O(1)。这些解法展示了链表问题的常见处理模式,包括快慢指针、反转链表和长度对齐等核心技巧。原创 2025-09-19 20:24:31 · 1075 阅读 · 0 评论 -
【算法日记】杨辉三角,轮转数组,洗牌算法
本文介绍了三个算法问题的解决方案:杨辉三角生成、数组旋转和洗牌算法。杨辉三角通过二维数组逐行构建,每个数是上一行相邻两数之和;旋转数组采用三次翻转法,先整体翻转再分段翻转;洗牌算法通过随机交换实现公平洗牌,并演示了扑克牌的分发逻辑。每个问题均附Java代码实现,涵盖数组处理、数学规律和随机算法等核心编程技巧。原创 2025-09-13 16:05:56 · 1121 阅读 · 0 评论 -
【算法日记】String相关算法练习
本文介绍了四个字符串处理问题的解法:1) 查找字符串中第一个唯一字符的索引;2) 计算句子最后一个单词的长度;3) 验证字符串是否为回文;4) 统计字符串中的单词数。每个问题都给出了Java实现代码和解题思路,涉及数组计数、字符串分割、双指针等技巧。此外还分析了一个关于引用传递的程序运行结果,解释了String不可变性和数组修改的特性。原创 2025-09-08 15:55:06 · 1058 阅读 · 2 评论 -
【算法日记】链表经典算法:移除元素,反转链表,约瑟夫环问题,找中间节点,分割链表
本文介绍了五种链表操作的经典算法题解:1)删除特定值节点,通过哨兵节点统一处理;2)反转链表,使用双指针迭代实现;3)合并有序链表,采用哨兵节点简化拼接;4)寻找中间节点,运用快慢指针法;5)链表分割,创建两个子链表后拼接。每个问题都包含示例说明、解题思路、代码实现及解析,重点展示了哨兵节点和双指针等技巧在链表操作中的灵活应用。原创 2025-08-17 22:34:15 · 1143 阅读 · 2 评论 -
【算法日记】双指针法元素移除与有序合并
双指针技术是处理数组问题的常用技巧,能够在不使用额外空间的情况下高效地完成操作逆向思维在合并有序数组问题中起到了关键作用,从后往前操作避免了元素覆盖的问题原地操作的要求促使我们思考更高效的空间利用方式。原创 2025-08-15 00:40:36 · 1236 阅读 · 0 评论