
栈、队列
JustSleep
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
LeetCode 20. Valid Parentheses
给定一个只包括 '(',')','{','}','[',']' 的字符串,判断字符串是否有效。 有效字符串需满足: 左括号必须用相同类型的右括号闭合。 左括号必须以正确的顺序闭合。 注意空字符串可被认为是有效字符串。 示例 1: 输入: "()" 输出: true 示例 2: 输入: "()[]{}" 输出: true 解题思路: 这里我们需要用一个栈,我们开始遍历输入字符...原创 2019-01-22 10:08:05 · 88 阅读 · 0 评论 -
LeetCode 173. Binary Search Tree Iterator
实现一个二叉搜索树迭代器。你将使用二叉搜索树的根节点初始化迭代器。 调用 next() 将返回二叉搜索树中的下一个最小的数。 示例: BSTIterator iterator = new BSTIterator(root); iterator.next(); // 返回 3 iterator.next(); // 返回 7 iterator.hasNext(); //...原创 2019-01-23 10:44:50 · 107 阅读 · 0 评论 -
LeetCode 155. Min Stack
设计一个支持 push,pop,top 操作,并能在常数时间内检索到最小元素的栈。 push(x) -- 将元素 x 推入栈中。 pop() -- 删除栈顶的元素。 top() -- 获取栈顶元素。 getMin() -- 检索栈中的最小元素。 示例: MinStack minStack = new MinStack(); minStack.push(-2); minStack.pus...原创 2019-01-23 10:22:06 · 112 阅读 · 0 评论 -
LeetCode 230. Kth Smallest Element in a BST
给定一个二叉搜索树,编写一个函数 kthSmallest 来查找其中第 k 个最小的元素。 说明: 你可以假设 k 总是有效的,1 ≤ k ≤ 二叉搜索树元素个数。 示例 1: 输入: root = [3,1,4,null,2], k = 1 3 / \ 1 4 \ 2 输出: 1 示例 2: 输入: root = [5,3,6,2,4,null,null,...原创 2019-02-01 17:01:11 · 132 阅读 · 0 评论 -
LeetCode 199. Binary Tree Right Side View
给定一棵二叉树,想象自己站在它的右侧,按照从顶部到底部的顺序,返回从右侧所能看到的节点值。 示例: 输入: [1,2,3,null,5,null,4] 输出: [1, 3, 4] 解释: 1 <--- / \ 2 3 <--- \ \ 5 4 <--- 解题思路: 二叉树的层次...原创 2019-02-01 16:20:26 · 111 阅读 · 0 评论 -
LeetCode 145. Binary Tree Postorder Traversal
给定一个二叉树,返回它的 后序 遍历。 示例: 输入: [1,null,2,3] 1 \ 2 / 3 输出: [3,2,1] 解题思路: 要保证根节点在左右子树访问完成后在访问根节点。 对于任意节点p,先将p入栈,若p不存在左孩子或者右孩子,或者p存在左孩子或者右孩子但是已经被访问了,则可以直接输出节点p,并将其出栈,将出栈节点p标记为上一...原创 2019-01-22 15:13:34 · 97 阅读 · 0 评论 -
LeetCode 144. Binary Tree Preorder Traversal
给定一个二叉树,返回它的 前序 遍历。 示例: 输入: [1,null,2,3] 1 \ 2 / 3 输出: [1,2,3] 解题思路: 前序遍历的非递归实现,使用栈来进行辅助运算,先把根节点压入到栈中, 循环检测栈是否为空,若不空,则取出栈顶元素,保存其值,然后看其右子节点是否存在,若存在则push到栈中。再看其左子节点,若存在,则pus...原创 2019-01-22 13:51:18 · 97 阅读 · 0 评论 -
LeetCode 103. Binary Tree Zigzag Level Order Traversal
给定一个二叉树,返回其节点值的锯齿形层次遍历。(即先从左往右,再从右往左进行下一层遍历,以此类推,层与层之间交替进行)。 例如: 给定二叉树 [3,9,20,null,null,15,7], 3 / \ 9 20 / \ 15 7 返回锯齿形层次遍历如下: [ [3], [20,9], [15,7] ] 解题思路: 使用两个栈保...原创 2019-01-22 13:13:26 · 95 阅读 · 0 评论 -
LeetCode 94. Binary Tree Inorder Traversal
给定一个二叉树,返回它的中序 遍历。 示例: 输入: [1,null,2,3] 1 \ 2 / 3 输出: [1,3,2] 解题思路: 需要用栈来做,思路是从根节点开始,先将根节点压入栈,然后再将其所有左子结点压入栈,然后取出栈顶节点,保存节点值,再将当前指针移到其右子节点上,若存在右子节点,则在下次循环时又可将其所有左子结点压入栈中。这样就保证了...原创 2019-01-22 11:18:19 · 95 阅读 · 0 评论 -
LeetCode 71. Simplify Path
以 Unix 风格给出一个文件的绝对路径,你需要简化它。或者换句话说,将其转换为规范路径。 在 Unix 风格的文件系统中,一个点(.)表示当前目录本身;此外,两个点 (..) 表示将目录切换到上一级(指向父目录);两者都可以是复杂相对路径的组成部分。更多信息请参阅:Linux / Unix中的绝对路径 vs 相对路径 请注意,返回的规范路径必须始终以斜杠 / 开头,并且两个目录名之间必须只有...原创 2019-01-22 10:52:13 · 234 阅读 · 0 评论 -
LeetCode 227. Basic Calculator II
实现一个基本的计算器来计算一个简单的字符串表达式的值。 字符串表达式仅包含非负整数,+,-,*,/四种运算符和空格。 整数除法仅保留整数部分。 示例1: 输入: "3+2*2" 输出: 7 示例 2: 输入: " 3/2 " 输出: 1 示例 3: 输入: " 3+5 / 2 " 输出: 5 说明: 你可以假设所给定的表达式都是有效的。 请不要使用内置的库...原创 2019-05-08 20:20:25 · 186 阅读 · 0 评论