小渣渣的算法学习笔记:2018秋招备战
数据结构类算法总结:栈
数据结构类算法总结:栈
1.题目描述:
输入两个整数序列,第一个序列表示栈的压入顺序,请判断第二个序列是否为该栈的弹出顺序。 假设压入栈的所有数字均不相等。例如序列1,2,3,4,5是某栈的压入顺序, 序列4,5,3,2,1是该压栈序列对应的一个弹出序列, 但4,3,5,1,2就不可能是该压栈序列的弹出序列。(注意:这两个序列的长度是相等的)
2.代码实现:
public class Solution31 { public static void main(String[] args) { Solution31 s = new Solution31(); int []pusha = {1,2,3,4,5}; int []popa = {4,5,3,2,1}; boolean c = s.isPopOrder(pusha,popa); System.out.println(c); } public boolean isPopOrder(int push[],int pop[]){ if(push.length == 0||pop.length == 0) return false; int index = 0; Stack<Integer> s = new Stack<Integer>(); for(int i = 0;i<push.length;i++){ s.push(push[i]); //辅助栈不为空and pop[i] == s.peek() while(!s.empty()&&pop[index]==s.peek()){ s.pop(); index++; } } return s.empty(); } }