栈
leetcode题目分类--栈
m0_38142029
这个作者很懒,什么都没留下…
展开
-
[树 遍历的应用] 235.BST的最近公共祖先(利用BST特点做DFS) 236.二叉树的最近公共祖先( 路径栈法、后序遍历法,剑指offer 68 - II)
[剑指offer 68 - II] 二叉树的最近公共祖先(递归思路整理)1 题目分析2 思路1:后序遍历 + 递归思路整理1、确定递归函数的功能、返回值2、后序遍历过程分析3、算法实现1 题目分析剑指 Offer 68 - II. 二叉树的最近公共祖先 236. 二叉树的最近公共祖先这题和68-1相比,二叉搜索树换成了一般的二叉树,其他条件和要求不变。因此68-1的思路在这里不再适用,要在一般二叉树里找到指定的节点,最差情况下需要遍历所有节点才能找到,无法根据待查节点和root的大小关系自主原创 2020-10-03 23:10:55 · 120 阅读 · 0 评论 -
[设计 栈] 232. 用栈实现队列(双栈模拟队列、缓冲区法)
[设计 栈] 232. 用栈实现队列(双栈模拟队列、缓冲区法)232. 用栈实现队列思路1:改造pop,peek思路2:改造push思路3:缓冲区思想,均摊O(1) (推荐)232. 用栈实现队列题目链接:https://leetcode-cn.com/problems/implement-queue-using-stacks/分类:设计:用两个栈模拟队列(常规方法、缓冲区法)栈:利用栈FILO的特点模拟队列的四个基本函数(push,pop,peek,empty)思路1:改造pop,p原创 2020-10-02 23:38:27 · 228 阅读 · 0 评论 -
[设计] 225. 用队列实现栈(两个队列法、一个队列法)
[设计] 225. 用队列实现栈(两个队列法、一个队列法)225. 用队列实现栈思路1:两个队列思路2:一个队列225. 用队列实现栈题目链接:https://leetcode-cn.com/problems/implement-stack-using-queues/分类:设计:用队列模拟栈的四个操作(push,pop,top,empty)队列:只能使用队列的基本操作模拟栈、方法有:两个队列法、一个队列法。思路1:两个队列队列的特点是先进先出,栈的特点是先进后出,要用队列来模拟栈,可原创 2020-09-30 17:52:15 · 96 阅读 · 0 评论 -
[栈 字符串] 224. 基本计算器(栈的应用:符号栈+数字栈+出入栈规则、字符串解析) 227.基本计算器 II(出入栈规则、字符串解析)
[栈 字符串] 224. 基本计算器(栈的应用:符号栈+数字栈+出入栈规则、字符串解析)224. 基本计算器思路:栈 + 字符串解析实现遇到的问题:数字截取问题224. 基本计算器题目链接:https://leetcode-cn.com/problems/basic-calculator/分类:栈(开辟符号栈、数字栈,设计出入栈规则,实现带括号的加减法)数学/字符串(分析+实现基本计算器的功能,实质上是对字符串的解析:对数字、括号字符、加减法号的提取)思路:栈 + 字符串解析开辟两个原创 2020-09-30 16:54:46 · 602 阅读 · 0 评论 -
[树遍历的应用]110. 平衡二叉树(后序遍历)111.二叉树的最小深度(前序遍历)114. 二叉树展开为链表(前序遍历:迭代、morris)
[树遍历的应用 leetcode]110. 平衡二叉树(后序遍历)110. 平衡二叉树(后序遍历、剪枝)思路1:后序遍历实现时遇到的问题:特殊用例[]实现代码思路1优化:短路或 + if上写赋值语句实现代码110. 平衡二叉树(后序遍历、剪枝)题目链接:https://leetcode-cn.com/problems/balanced-binary-tree/分类:树、递归(后序遍历)这题是二叉树遍历的应用。递归练习题。思路1:后序遍历根据后序遍历的特点:先左右,再根节点,所以在处理根节点时就原创 2020-11-09 13:10:28 · 185 阅读 · 0 评论 -
[树] 101. 对称二叉树(前序遍历 + 方法优化)
[树 leetcode] 101. 对称二叉树(前序遍历 + 方法优化)第101. 对称二叉树思路1:左右同步深度优先遍历(前序遍历 - 递归实现,遍历2次)实现代码思路1 优化:只遍历一次实现代码思路2:左右同步深度优先遍历(前序遍历 - 迭代实现,遍历2次)第101. 对称二叉树题目链接:https://leetcode-cn.com/problems/symmetric-tree/分类:树(二叉树)、前序遍历(递归、迭代)、算法优化思路1:左右同步深度优先遍历(前序遍历 - 递归实现,遍历2原创 2020-10-23 14:36:15 · 434 阅读 · 0 评论 -
[二叉树遍历递归和迭代实现整理]144. 二叉树的前序遍历 94. 二叉树的中序遍历 145. 二叉树的后序遍历
二叉树遍历的递归和迭代实现前序遍历概念 + 举例习题递归实现迭代实现写法1:只有右孩子入栈前序遍历概念 + 举例前序遍历:对于当前节点,先输出该节点,然后输出他的左孩子,最后输出他的右孩子。例如:前序遍历序列:[1,2,4,6,7,3,5]习题题目链接:144. 二叉树的前序遍历递归实现二叉树遍历的递归实现都很简单,只需要按上面所述的前序遍历的概念出发编写代码即可:先树根,然后左子树,然后右子树。每棵子树递归。在递归函数最前面设置好递归出口:当root == null,退出当前递归原创 2020-10-23 14:35:11 · 183 阅读 · 0 评论 -
[单调栈 ]42.接雨水 84.柱状图中最大的矩形(暴力法 -> 单调栈)
[单调栈 leetcode]42.接雨水 84.柱状图中最大的矩形(暴力法 -> 单调栈)42.接雨水思路1:暴力解(所有解法的基本思想,很关键)思路2:动态规划思路3:双指针法(动态规划的空间优化,最佳解法)思路4:单调栈(按行计算 + 算法原理改进,推荐解法)分析如何用栈来实现这一过程?84. 柱状图中最大的矩形题目分析思路1:暴力解思路2:动态规划(没找到可行方法)思路3:单调栈 + 哨兵技巧实现代码(更好理解)代码简化42.接雨水题目链接:42.接雨水分类:数组、栈(单调栈)、动态规划、原创 2020-10-18 13:11:45 · 196 阅读 · 1 评论