剑指offer-给出一个入栈序列和一个出栈序列,判断出栈序列是否合法。
来源:互联网 发布:november rain 知乎 编辑:程序博客网 时间:2024/06/07 23:08
题目描述
输入两个整数序列,第一个序列表示栈的压入顺序,请判断第二个序列是否为该栈的弹出顺序。假设压入栈的所有数字均不相等。例如序列1,2,3,4,5是某栈的压入顺序,序列4,5,3,2,1是该压栈序列对应的一个弹出序列,但4,3,5,1,2就不可能是该压栈序列的弹出序列。
判断标准:出栈序列中第i个元素后面的元素在是入栈序列中的逆序
思路:把给出的入栈序列以此入栈;每次入栈检查当前栈顶元素和出栈序列的指针元素(初始指向首元素)是否相等,相等则出栈并且后移指针
import java.util.Stack;public class Solution { public static void main(String[] args) { Solution s = new Solution(); int[] pushA = {1,2,3,4,5}; int[] popA = {4,3,5,1,2}; System.out.println(s.IsPopOrder(pushA,popA)); } public boolean IsPopOrder(int [] pushA,int [] popA) { if(pushA.length==0 && popA.length==0) return true; Stack<Integer> stack = new Stack<>(); for (int i = 0,j = 0; i < pushA.length; i ++) { stack.push(pushA[i]); while(!stack.isEmpty() && stack.peek() == popA[j]) { stack.pop(); j++; } } return stack.isEmpty() == true; }}
0 0
- 剑指offer-给出一个入栈序列和一个出栈序列,判断出栈序列是否合法。
- 给出入栈序列,快速判断出栈序列是否合法
- 给出一个入栈序列和一个出栈序列,判断出栈序列是否是入栈序列对应的出栈序列
- 3.5判断出栈和入栈操作序列是否合法
- 给定入栈序列判断给定出栈序列是否合法
- 给定入栈序列,判断出栈序列是否合法
- 判断出栈序列是否合法
- 判断出栈序列是否合法
- 判断出栈序列是否合法
- 判断出栈序列是否合法
- 判断一个序列的出栈次序是否合法
- 给定入栈序列,判定出栈序列是否合法
- 检验入栈序列、出栈序列是否合法
- 栈--判断出栈序列是否合法
- 给定入栈序列判断给定出栈序列是否合法(Exercise1_3_45,java)
- 边看边写(判断一个序列是否为出栈序列)
- 判断一个序列是否为另一个栈的出栈序列(栈的压入、弹出序列)
- 剑指Offer——入栈与出栈序列
- (乙)1013. 数素数
- 漂亮的复选框
- iOS控件 ----- UITouch相关
- CentOS6.7直接启动命令行模式(在图形界面没装并且已经设置/etc/initab里的默认值为5的情况下)
- Android 取消横竖屏切换Activity重走生命周期
- 剑指offer-给出一个入栈序列和一个出栈序列,判断出栈序列是否合法。
- 第4周—项目3.(1)结点逆置
- 卡尔曼滤波算法实例剖析--机器人足球赛场中的定位算法
- 归并排序
- iOS开发 ----- Controller之间的传值
- Java教程开山篇—开发环境搭建
- most of 1-1000
- nginx学习
- PHP无限分类的原理