栈
栈
Rqff
这个作者很懒,什么都没留下…
展开
-
155. 最小栈
155. 最小栈 设计一个支持 push ,pop ,top 操作,并能在常数时间内检索到最小元素的栈。 push(x) —— 将元素 x 推入栈中。 pop() —— 删除栈顶的元素。 top() —— 获取栈顶元素。 getMin() —— 检索栈中的最小元素。 示例: 输入: ["MinStack","push","push","push","getMin","pop","top","getMin"] [[],[-2],[0],[-3],[],[],[],[]] 输出: [null,null,n原创 2020-05-12 21:05:15 · 99 阅读 · 0 评论 -
利用栈计算中缀表达式
给定一个中缀表达式,如果合法那么求出它的值,否则返回错误信息。 首先要将中缀表达式转换为后缀表达式(逆波兰表达式) 这里的输入限定为:除操作符外均为小写字母,假设输入合法的中缀表达式 思想:从左到右扫描中缀表达式 遇到数字时,加入后缀表达式 遇到运算符时: a.若为’(’,入栈 b.若为‘)’,则依次把栈中的运算符加入后缀表达式,直到出现’(’,从栈中删除’)’ c.若为除括号的其他运算符...原创 2020-04-02 11:39:10 · 1498 阅读 · 0 评论 -
面试题09. 用两个栈实现队列
面试题09. 用两个栈实现队列 用两个栈实现一个队列。队列的声明如下,请实现它的两个函数 appendTail 和 deleteHead ,分别完成在队列尾部插入整数和在队列头部删除整数的功能。(若队列中没有元素,deleteHead 操作返回 -1 ) 一个队列中的数两次经过栈,还是保持先进先出的性质。 如果我们让所有的数都顺序经过A和B,那么队列就仍然保持原来的性质。如果要删队列头部的数,那...原创 2020-04-01 20:25:24 · 89 阅读 · 0 评论 -
946. 验证栈序列
946. 验证栈序列 双指针遍历,时间复杂度O(n) 遍历要入栈的数组,将栈顶元素与验证数组比较,如果相等,就验证下一个数,如果不相等,就取下一个数入栈,如果是合法的出栈序列,最终栈是空的。 class Solution { public boolean validateStackSequences(int[] pushed, int[] popped) { int ind...原创 2020-02-10 16:22:46 · 158 阅读 · 0 评论 -
921. 使括号有效的最少添加
其实怎么变基本上都是栈的思想,但是可以不用显式的定义栈。 想法: 顺序遍历S,设置一个变量保存当前未配对的左括号,如果出现了右括号,并且还能配对,就配对;没有左括号了,那以后也不能匹配了。 class Solution { public int minAddToMakeValid(String S) { int res = 0; int num = 0; /...原创 2020-02-01 15:29:49 · 270 阅读 · 0 评论