- 博客(17)
- 收藏
- 关注
原创 【leetcode】169.多数元素
本文介绍了LeetCode中寻找数组多数元素的两种解法。第一种通过排序后直接取中间元素,利用多数元素出现次数超过一半的特性;第二种使用哈希表统计元素出现次数,遍历时维护最大值。两种方法时间复杂度分别为O(nlogn)和O(n),空间复杂度分别为O(1)和O(n)。作者推荐第一种更简洁的排序解法,并分享了解题思路和代码实现。
2026-02-10 00:18:21
294
原创 【leetcode】136.只出现一次的数字
本文介绍了LeetCode简单题"只出现一次的数字"的多种解法。主要思路包括:1)位运算异或法,利用异或运算"同0异1"特性消除重复数字;2)集合增删法,通过集合存储和删除元素找出唯一数;3)哈希表统计法,记录数字出现次数后筛选;4)集合求和差值法,利用数学公式计算唯一数。文章详细分析了每种方法的实现原理和代码示例,并总结了作者在解题过程中遇到的集合使用不熟练的问题。通过比较不同解法,展示了算法问题的多样性解决思路。
2026-02-09 23:44:11
983
原创 【leetcode】101.对称二叉树
本文探讨了判断二叉树是否对称的两种解法。递归解法通过比较左右子树的镜像关系,分为三种终止条件:双空节点返回true、单空节点或值不等返回false,否则递归比较左左-右右和左右-右左节点。迭代解法使用队列,依次比较成对节点并按特定顺序入队子节点。文章还记录了作者解题过程中的思路演变和错误反思,最终实现了时间复杂度O(n)的高效算法。
2026-02-09 15:53:24
716
原创 【leetcode】102.二叉树的层序遍历
本文分享了二叉树层序遍历的两种解法。BFS解法利用队列实现,按层处理节点;DFS解法则通过递归标记节点层数,动态扩展结果数组。作者在尝试BFS时遇到数组越界问题,通过引入临时vector存储每层数据解决。文章还记录了作者在图书馆学习的有趣经历,展现了解决问题的思考过程。两种解法各有特点,BFS直观,DFS巧妙,都值得掌握。
2026-02-06 14:50:14
972
原创 【leetcode】104.二叉树的最大深度
本文介绍了计算二叉树最大深度的两种方法:递归(DFS)和层序遍历(BFS)。递归方法通过比较左右子树深度取较大值加1得到结果,时间复杂度O(n),空间复杂度O(height)。BFS方法使用队列逐层遍历节点,统计层数即为最大深度,同样时间复杂度O(n)。文章还分析了二叉树的层序遍历实现原理,并提供了相关代码示例。作者提到初次解题时对递归理解不足,通过观看讲解视频才掌握解法,建议后续复习巩固。
2026-02-06 00:38:49
630
原创 【leetcode】94.二叉树的中序遍历(含前序、后序遍历相关内容)
本文介绍了二叉树中序遍历的递归和非递归解法。递归解法遵循"左根右"顺序,通过辅助函数实现;非递归解法使用栈模拟递归过程,核心思路是先处理左子树,再访问根节点,最后处理右子树。文章还补充了前序和后序遍历的递归写法,以及前序遍历的非递归实现。非递归解法是面试重点,需要重点掌握。
2026-02-05 20:21:12
842
原创 【leetcode】21.合并两个有序链表
本文介绍了合并两个有序链表的三种解法。第一种是直接比较法,通过创建新链表逐步比较两个链表节点值;第二种是迭代法,利用哨兵节点和指针重新连接链表;第三种是递归法,通过递归定义实现合并。文章详细分析了每种方法的实现思路和代码,并指出了常见错误。三种方法时间复杂度均为O(m+n),空间复杂度分别为O(m+n)、O(1)和O(m+n)(递归栈空间)。递归法最简洁但可能栈溢出,迭代法最优。
2026-01-31 20:29:25
1261
原创 【leetcode】141.环形链表
文章分享了作者解决LeetCode环形链表问题的思路,重点介绍了快慢指针法,并详细分析了代码实现中的常见错误。同时提到哈希表解法作为备选方案,通过对比两种方法的优缺点,帮助读者更好理解链表环检测问题。文章还记录了作者调试过程中遇到的指针越界问题和解决方案,为算法学习者提供了实用参考。
2026-01-30 15:38:06
270
原创 【leetcode】206.反转链表
本文介绍了反转链表的两种解法:迭代法和递归法。迭代法使用双指针(pre和cur),通过临时存储节点实现指针方向反转,最终返回pre作为新链表头。递归法则通过层层深入找到尾节点,回溯时逐层修改指针指向。两种方法都推荐配合图示手工模拟来加深理解。代码实现简洁高效,时间复杂度均为O(n)。
2026-01-27 22:45:02
365
原创 【leetcode】234. 回文链表
本文讨论了判断单链表是否为回文的两种解法。第一种方法将链表值存入数组,使用双指针从头尾比较,空间复杂度O(n)。第二种方法采用快慢指针找到链表中间节点,反转后半部分后比较,空间复杂度优化至O(1)。文章还指出了使用vector迭代器时end()指向末尾下一个位置的常见错误,提醒应使用end()-1获取最后一个元素。两种解法各有特点,第二种方法更节省空间但会修改原链表结构。
2026-01-27 22:17:11
303
原创 【leetcode】283.移动零
本文探讨了LeetCode题目“移动零”的多种解法。用队列辅助,遍历数组时将非零元素存入新数组,统计零的数量后统一补零。此外介绍了两种优化解法:1)栈方法,遍历时非零元素入栈并记录位置,最后补零;2)双指针+两次遍历,首次遍历将非零元素前移,第二次遍历末尾补零。代码示例展示了C++和Java的实现,推荐结合题解动图加深理解。
2026-01-27 00:41:48
746
原创 【leetcode】226. 翻转二叉树
我们有了一层的互换方法,那么一层一层下去每一个节点都互换就完事了,这时候就想到递归。自然是最深的节点咯,而他们的特点就是left和right指向的都是NULL(或者说left和right都是nullptr),这时候就可以停止往下挖,把root返回回去,一直到最后归到根节点上。从示例我们能够看到其实要做的就是将每个节点的左右都换位置,那么熟悉树结构的朋友们都知道这里每个节点的指向都是通过指针来实现的,因此只需要让left和right改成指向对方的那个节点就行。好困好困好困啊啊啊!(手有点太快脑子还没跟上。
2025-09-08 20:41:31
366
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅
4