我们一起来刷题
文章平均质量分 84
Tantanovo
知不足而奋进
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
刷题日常 11 轮转数组
本文介绍了三种旋转数组的方法:1)使用额外数组存储旋转后的元素,时间复杂度O(n),空间复杂度O(n);2)环状替换法,通过交换元素位置实现旋转,利用数学推导确定循环次数,时间复杂度O(n),空间复杂度O(1);3)数组翻转法,先整体翻转再局部翻转两部分,时间复杂度O(n),空间复杂度O(1)。三种方法各具特点,其中方法二和方法三在空间效率上更优。原创 2025-11-12 22:08:22 · 843 阅读 · 0 评论 -
刷题日常 10 乘最多水的容器
本文介绍了使用双指针法解决容器盛水问题的思路。初始时左右指针分别指向数组两端,计算当前容量后移动数值较小的指针,逐步缩小范围。通过证明说明每次移动小指针的正确性,因为保留较大指针能保证后续可能获得更大容量。算法时间复杂度为O(N),空间复杂度为O(1),是一种高效的解决方案。原创 2025-11-12 22:06:50 · 687 阅读 · 0 评论 -
刷题日常 9 前中序构建二叉树
本文介绍了两种基于前序遍历和中序遍历结果重建二叉树的方法:递归法和迭代法。递归法的核心是利用前序遍历确定根节点,并在中序遍历中定位该节点以划分左右子树,通过哈希表优化定位过程,时间复杂度为O(n)。迭代法则借助栈结构模拟递归过程,通过比较栈顶节点和中序遍历指针来构建左右子树,时间复杂度同样为O(n)。两种方法都需要O(n)的额外空间,递归法用于存储哈希表和递归栈,迭代法用于维护辅助栈。文中通过示例详细说明了两种方法的实现步骤和原理,为二叉树重建问题提供了清晰的解决方案。原创 2025-11-11 21:03:24 · 1015 阅读 · 0 评论 -
刷题日常 8 中后序构建二叉树
摘要: 本文提出了两种基于中序和后序遍历重建二叉树的方法。递归法利用后序遍历的最后一个元素确定根节点,通过哈希表快速定位中序遍历中的分割点,时间复杂度O(n)。迭代法通过栈和指针实现,反向遍历后序和中序序列构建树,同样达到O(n)时间复杂度。两种方法都详细分析了算法流程,并通过示例说明实现细节,其中递归法需要额外O(n)空间存储哈希表,而迭代法的空间复杂度取决于树高。两种方案都为解决二叉树重建问题提供了有效途径。原创 2025-11-11 21:01:35 · 668 阅读 · 0 评论 -
刷题日常 7 路经总和
摘要:本文探讨如何判断二叉树中是否存在从根节点到叶子节点的路径和等于给定值。提出了两种解法:1)广度优先搜索(BFS):使用队列遍历节点并记录路径和,空间复杂度O(N);2)递归方法:将问题分解为子问题,判断子节点到叶子的路径和是否为sum-val,空间复杂度O(H)。两种方法时间复杂度均为O(N),其中递归法空间效率更高。特别处理了空树情况,确保算法正确性。(150字)原创 2025-11-11 20:59:24 · 790 阅读 · 0 评论 -
刷题日常 6 对称二叉树
本文介绍了两种判断二叉树对称性的方法。递归方法通过同步移动两个指针遍历树,比较对应节点的值和子树是否对称,时间复杂度O(n),空间复杂度O(n)来自递归栈。迭代方法使用队列,每次取出两个节点比较并将子节点按相反顺序入队,同样具有O(n)的时间和空间复杂度。两种方法都能有效判断树的对称性,递归更简洁但可能栈溢出,迭代则更适合处理深层树结构。代码实现展示了两种解法的具体操作步骤。原创 2025-11-11 20:47:32 · 325 阅读 · 0 评论 -
刷题日常 5 二叉树最大深度
本文介绍了两种计算二叉树最大深度的方法。深度优先搜索(DFS)采用递归方式,通过比较左右子树的最大深度再加1得到结果,时间复杂度O(n),空间复杂度O(height)。广度优先搜索(BFS)使用队列逐层遍历,记录层数即为最大深度,时间复杂度O(n),最坏空间复杂度O(n)。两种方法各具特点,DFS代码简洁但递归深度受限,BFS适合宽树但空间消耗可能较大。原创 2025-11-11 20:45:13 · 407 阅读 · 0 评论 -
刷题日常 4 二叉树层序遍历
该代码实现了二叉树的层次遍历(BFS)。使用队列存储每层节点,依次处理当前层节点并收集子节点,将每层节点值存入结果数组。时间复杂度O(n),空间复杂度O(n),适用于按层级顺序遍历二叉树的需求。原创 2025-11-11 20:44:11 · 226 阅读 · 0 评论 -
刷题日常 3 二叉树后序遍历
该代码实现了二叉树的后序遍历算法。通过使用栈结构而非递归,采用迭代方式完成遍历。算法核心是:先将左子节点压栈,处理完左子树后检查右子节点是否为空或已访问。若是则输出当前节点值,否则重新压栈并处理右子树。这种方法避免了递归开销,空间复杂度为O(n),时间复杂度为O(n)。关键点在于使用prev指针标记已访问节点,确保节点只被处理一次。原创 2025-11-11 20:43:17 · 209 阅读 · 0 评论 -
刷题日常 2 二叉树中序遍历
该代码实现了二叉树的中序遍历(左-根-右),使用非递归方法。通过维护一个栈结构,首先将左子树节点全部入栈,然后处理栈顶节点并将其值存入结果,最后转向右子树。这种方法避免了递归调用栈的开销,空间复杂度为O(n),时间复杂度为O(n)。原创 2025-11-11 20:42:07 · 173 阅读 · 0 评论 -
刷题日常 1 二叉树前序遍历
该代码实现了二叉树的前序遍历(根-左-右)的非递归版本。使用栈来模拟递归过程:先将根节点入栈,然后循环处理栈顶节点:记录节点值,并依次将右、左子节点入栈(确保左子树先处理)。空树直接返回空结果。算法时间复杂度O(n),空间复杂度O(n)。原创 2025-11-11 20:41:16 · 134 阅读 · 0 评论
分享