栈的压入、弹出序列
来源:互联网 发布:高干子弟的生活知乎 编辑:程序博客网 时间:2024/06/14 05:53
1.题目描述:输入两个整数序列,第一个序列表示栈的压入顺序,请判断第二个序列是否为栈的弹出顺序。假设压入栈的所有数字均不相等。例如序列1,2,3,4,5是某栈的压入顺序,序列4,5,3,2,1是该压栈序列的一个弹出序列,但4,3,5,1,2就不可能是该压栈序列的弹出序列。
2.分析:借助一个辅助栈,按照压入序列入栈,然后每入栈一次,与出栈序列进行比较,若相等,则出辅助栈。最终如果辅助栈为空,说明该弹出序列满足条件。
代码如下
package t2;import java.util.Stack;public class Solution { public static void main(String[] args) {// int[] popA = {4,3,5,1,2}; int[] pushA = {1,2,3,4,5}; int[] popA = {4,5,3,2,1}; System.out.println(IsPopOrder(popA, pushA)); } public static boolean IsPopOrder(int[] popA,int[] pushA){ if(popA==null&&pushA==null) return false; Stack<Integer> stack = new Stack<Integer>(); int popIndex=0; for(int i=0;i<pushA.length;i++){ stack.push(pushA[i]); while(!stack.isEmpty()&&stack.peek()==popA[popIndex]){ stack.pop(); popIndex++; } } return stack.isEmpty(); }}
3.结果
4.总结:此题考察栈的数据结构和出栈入栈操作。
阅读全文
0 0
- 1366栈的压入弹出序列
- 栈的压入、弹出序列
- 栈的压入、弹出序列
- 栈的压入、弹出序列
- Q22:栈的压入、弹出序列
- 栈的压入弹出序列
- 栈的压入、弹出序列
- 栈的压入弹出序列
- 栈的压入、弹出序列
- 栈的压入弹出序列
- 栈的压入、弹出序列
- 栈的压入、弹出序列
- 栈的压入弹出序列
- 栈的压入、弹出序列
- 栈的压入和弹出序列
- 栈的压入、弹出序列
- 栈的压入、弹出序列
- 栈的压入、弹出序列
- Base64的三种实现方式
- SSL renegotiation攻击
- 前端内容命名
- Qsort 快排
- 数据结构之头结点链表的三种插入方式(头插法,尾插法,在pos处插入)
- 栈的压入、弹出序列
- javascript
- 机器学习-->特征降维方法总结
- 指针数组,数组指针,指向指针数组的指针
- IOCP 详解
- 面向对象重写(override)与重载(overload)区别
- Mybatis应用(一)应用步骤
- Java Serializable(序列化)
- div实现拖动效果