题目描述:
输入两个整数序列,第一个序列表示栈的压入顺序,请判断第二个序列是否为该栈的弹出顺序。假设压入栈的所有数字均不相等。
例如,序列 {1,2,3,4,5} 是某栈的压栈序列,序列 {4,5,3,2,1} 是该压栈序列对应的一个弹出序列,但 {4,3,5,1,2} 就不可能是该压栈序列的弹出序列。
提示:
0 <= pushed.length == popped.length <= 1000
0 <= pushed[i], popped[i] < 1000
pushed 是 popped 的排列。
如下图所示,栈的数据操作具有 先入后出 的特性,因此某些弹出序列是无法实现的。
class Solution{ public boolean validateStackSequences(int pushed[],int popped[]){ Stack<Integer> stack = new Stack<>(); int i=0; for(int num:pushed){ stack.push(num);// num 入栈 while(!stack.isEmpty()&&stack.peek()==popped[i]){// 循环判断与出栈 stack.pop(); i++; } } return stack.isEmpty(); } }
标签:popped,压入,Offer,int,31,pushed,序列,stack From: https://www.cnblogs.com/zhz123567/p/17408804.html