stack
文章平均质量分 69
bsbcarter
这个作者很懒,什么都没留下…
展开
-
*LeetCode-Binary Search Tree Iterator
设计数据结构,用一个内部的stack存所有小于root的节点,即push的顺序是从大到小的,实现一个pushall函数 就是push这个node一直往左走路径上的所有节点。public class BSTIterator { private Stack stack = new Stack(); public BSTIterator(TreeNode root) {原创 2015-03-08 08:01:46 · 338 阅读 · 0 评论 -
**LeetCode-Basic Calculator
这个方法很巧妙 但是很容易出错 每次记录这次的符号或者数字 但是进行的运算是上一次的并且很巧妙的是用sign来记录上一个是+ 还是- sign为 1 或者 -1 下次乘到结果上然后就是注意数字可能不是个位的 要乘以十累加还有最后一个数字不要忘了加上去 假如遇到( 就要将当前结果和sign push 同时要给res和sign reset )的时候要先进行括号里面的最后一次运算原创 2015-10-01 07:38:48 · 293 阅读 · 0 评论 -
*LeetCode-Basic Calculator II
这个题也是每次遇到符号的话计算前一次符号的计算 因为符号意味着这个num结束 所以每次sign要存起来 存成char 下次判断用但是这个题是要把每个数字push进去 假如是乘除 算了这次再push 然后最后累加起来其中注意最后一个位的时候也要做一遍是sign的 push最后一个数字进去public class Solution { public int calculate(St原创 2015-10-01 08:15:24 · 261 阅读 · 0 评论 -
LeetCode-Simplify Path
这个题只要搞清楚什么是unix的path格式就好 就是后面没有/ 除了字母等有意义的字符以外 只有..有用 就是向上的意思所以用stack 不是..也不是无用的就push 遇到..就pop最后把stack里面的连起来 注意corner case 就是stack为空 但是遇到了。。 无法pop但是也要忽略。。public class Solution { public S原创 2015-10-02 04:43:43 · 231 阅读 · 0 评论 -
*LeetCode-Implement Stack using Queues
惯性思维以为也要用两个queue 这个题用一个就可以了 queue可以很方便的翻转顺序,把每个队头的poll出来add到后面就好了注意queue的实现方式 是用linkedlistclass MyStack { // Push element x onto stack private Queue que = new LinkedList(); public原创 2015-09-16 03:14:43 · 243 阅读 · 0 评论 -
LeetCode-Implement Queue using Stacks
这种都是用两个stack倒来倒去 注意stack peek和pop的不同 注意返回值class MyQueue { private Stack s1 = new Stack(); private Stack s2 = new Stack(); // Push element x to the back of queue. public void pus原创 2015-09-16 02:38:14 · 269 阅读 · 0 评论 -
*LeetCode-Verify Preorder Sequence in Binary Search Tree
build bst using traversal那些题还要再看一遍用一个stack 每次假如还在left subtree 即num 《 stack top 就push 假如大了 就一直pop知道不再大于 然后push进去 但是要记录pop出来的最后一个数字 就是已经遍历过的左子root 不能再有小于他的了 所以记录在一个int里面 每次数字都要和这个纪录比较 假如出现比他小的 就fals原创 2015-10-22 02:53:08 · 638 阅读 · 0 评论 -
*LeetCode-Largest Rectangle in Histogram
http://www.geeksforgeeks.org/largest-rectangle-under-histogram/public class Solution { public int largestRectangleArea(int[] height) { if ( height == null || height.length == 0 )原创 2015-10-09 08:53:02 · 246 阅读 · 0 评论 -
*LeetCode-Longest Valid Parentheses
用一个stack记录每个char的位置 假如有可以凑成一对的就pop 没有就在里面留着 这样扫过一遍之后 留下的都是没有凑对的 然后找到所有没有凑对的之间的距离 就是之间连续的valid()的长度 注意最后一个stack里面的char和string最后的位置 以及stack里面第一个char和0位置之间的两个substring也要计入public class Solution { pu原创 2015-10-11 05:35:57 · 290 阅读 · 0 评论