题目链接: 栈的压入、弹出序列
题解:
1,双指针,i,j分别指向这两个序列
2,模拟弹出序列的弹出.
3,j指向的元素只有是栈顶元素才能弹出,否则需继续压入元素i++.
4,当满足第三点时,弹出元素 j++ 模拟下一个元素的弹出.
5,模拟完成后未出现异常返回true
class Solution {
Stack<Integer> stack=new Stack<>();
public boolean validateStackSequences(int[] pushed, int[] popped) {
int i=0,j=0;
while(j<popped.length){
while(stack.isEmpty()||stack.peek()!=popped[j]){
if(i>=pushed.length) return false;
stack.push(pushed[i++]);
}
stack.pop();
j++;
}
return true;
}
}