栈
文章平均质量分 62
wnjason
这个作者很懒,什么都没留下…
展开
-
LeetCode---Valid Parentheses
题目大意:给出一个由括号组成的字符串,判断该字符串是否有效。有效字符串是每种括号必须正确匹配:(),[ ] , { } 不正确的匹配:(],{ ), ((((算法思想:扫描字符创,如果遇到左括号则压入栈,如果遇到右括号则和栈顶元素进行匹配,如果匹配正确则将栈顶元素出栈,如果不匹配则放会False。当字符串扫描完毕后,如果栈为空则返回TRUE,否则返回False。代码如下:clas原创 2015-05-12 17:00:09 · 472 阅读 · 0 评论 -
LeetCode---Implement Queue using Stacks
题目大意:用栈实现队列,包括入队列,出队列,取队头,判空等方法。算法思想:1.用两个栈模拟队列,一个栈s1模拟队列的尾部,一个栈s2模拟队列的头部。2.当入队列是,只需将元素压入s1即可。若s1和s2都为空则队列为空。3.当出队列时,先判断队列是否为空,若不空则看s2是否为空,不空则去栈顶元素即可,若空则将s1中的元素都压入s2栈中,然后取s2的栈顶元素。4.同理3可实现队列的原创 2015-11-12 10:48:59 · 263 阅读 · 0 评论 -
LeetCode---Min Stack
题目大意:实现一个栈,具备push(),pop(),top()操作,还能够在O(1)的时间内得到栈中最小的元素。算法思想:用STL中的vector来实现栈的push,pop,top操作,同时用一个栈用来记录当前最小元素,则栈顶元素即为栈中最小元素。代码如下:class MinStack {public: void push(int x) { if(s.si原创 2015-11-13 14:33:58 · 264 阅读 · 0 评论 -
LeetCode---Basic Calculator
题目大意:给出一个字符串形式的计算表达式,由整数,左右括号,加减符号组成 计算其结果。算法思想:边扫描字符串,边计算结果,当扫到一个数时将其记录到num中,扫描到非数的时候讲之前的数通过计算存到res中,然后判断扫描操作符如果为'+'号将sign标记为1,如果为‘-’则sign标记为-1,如果为‘(’则将当前结果和操作符入栈,来计算括号内的表达式,如果遇到‘)’则说明括号内的表达式计算完成原创 2015-11-14 14:42:37 · 340 阅读 · 0 评论 -
LeetCode---Evaluate Reverse Polish Notation
题目大意:给出一个后缀表达式,计算出其结果。算法思想:设置一个操作数栈,然后开始扫描容器如果当前扫描到的元素是操作数则将其放入栈中,如果当前扫描到的元素是运算符则从栈中取出两个元素进行计算然后将结果放入栈中,按此规律知道容器扫描结束。最后栈中将只有一个结果,机后缀表达式的结果将其返回即可。代码如下:class Solution {public: int evalRPN(v原创 2015-11-14 15:57:17 · 237 阅读 · 0 评论 -
LeetCode---Binary Tree Postorder Traversal
题目大意:给出一个二叉树,按照后序遍历该二叉树,返回遍历结果。算法思想:1.判断树是否为空,若为空直接返回空向量。2.设置一个栈,和两个树节点,分别记录当前节点和前驱节点。3.取栈顶。对于当前节点进行判断,是否满足以下两个条件之一1.该节点不存在孩子节点2.前驱节点为该节点的孩子节点。则说明该节点的孩子节点都访问过了,则可以直接访问节点,并将节点出栈。反之将该节点的左右孩子节点入栈原创 2015-10-29 20:09:07 · 304 阅读 · 0 评论 -
LeetCode---Simplify Path
题目大意:给出一个UNIX-style的路径,将其进行简化,如果遇见“/.”则保持当前路径 ,如果遇见“/..”则返回上一层路径,最后输出简化后的路径。算法思想:1.将给出的路径进行分割将每一层路径存储在容器中。2.按照简化规则进行路径简化,遍历容器如果遇见“.”则continue,如果遇见“..”则进行出栈操作(栈不空),如果是其他字符串则入栈。3.将栈中存储的简化后的路径单元拼原创 2015-11-14 17:15:12 · 303 阅读 · 0 评论