剑指offer-给出一个入栈序列和一个出栈序列,判断出栈序列是否合法。
2015-09-22 19:51
417 查看
题目描述
输入两个整数序列,第一个序列表示栈的压入顺序,请判断第二个序列是否为该栈的弹出顺序。假设压入栈的所有数字均不相等。例如序列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; } }
相关文章推荐
- CSS之Sass Compass
- JavaScript设计模式一:工厂模式和构造器模式
- HDOJ1015.Safecracker
- EXTJS 自学2 使用面板
- AngularJS 项目开发实战
- Extjs 自学1
- C_Reference_Card_(ANSI)_2.2-0
- An exception has occurred while using the formatter ‘JsonMediaTypeFormatter’ to generate sample
- 个人的浏览器重置样式表(总结)
- Featherstone R. Rigid body dynamics algorithms page 9
- 关于jquery的html() val() text()区别用法
- Reference VS Pointer
- JavaScript中关键字(this)
- jQuery中的isArrayLike函数
- The Difference Between Big Data and a Lot of Data
- jqMobi指南系列教程是《 jqMobi Javascript Frameworks Cheat Sheet》 的中文版
- js中的eval方法转换对象时,为何一定要加上括号?
- scrapy生成json中文乱码解决
- [看书][CSS精粹(第2版)]第三章 CSS和图像 & HTML网页布局
- JSP页面通过jstl进行变量累加