给你一个入栈顺序,判断出栈顺序是否合法
入栈的顺序(1,2,3,4,5)出栈(4,5,3,2,1)是合法序列
入栈的顺序(1,2,3,4,5) 出栈(1,5,3,2,4)是不合法序列
思路:
创建一个栈,依次按照入栈的顺序入栈,出不出栈取决于等不等于出栈,如果等于那么出栈,如果最后栈为空则为合法,否则不合法
芝士来啦:
- object push(object element)把项压入顶部
- object pop() 查看栈顶元素,并移除
- object peek() 查看栈顶元素,但不移除
package Java;import java.util.Stack;public class test {public static void main(String[] args) {int[] a={1,2,3,4,5};int[] b={1,5,3,2,4};System.out.println(validdateStackSequences(a,b));}public static boolean validdateStackSequences(int[] pushed,int[] popped){Stack<Integer> stack=new Stack<>();int j=0;for(int i=0;i< pushed.length;i++){stack.push(pushed[i]);//出不出栈,取决于等不等于poppedwhile(!stack.isEmpty() && stack.peek()==popped[i]){stack.pop();j++;}}return stack.isEmpty();}}