题目
思路
1、为popped序列设置一个指针,先压栈,然后当栈非空时,判断当前栈顶元素是否与指针指向的元素相等
2、若相等,则弹出栈顶,然后继续判断是否相等,直至不等则继续压栈
3、若最后指针不能遍历完popped序列,返回false
源代码
class Solution {
public boolean validateStackSequences(int[] pushed, int[] popped) {
Stack<Integer> stack=new Stack<>();
//为popped序列设置一个指针,先压栈,然后判断当前栈顶元素是否与指针指向的元素相等
//若相等,则弹出栈顶,然后继续判断是否相等,直至不等则继续压栈
//若最后指针不能遍历完popped序列,返回false
int i=0; //设置popped序列的指针
for(int j=0;j<pushed.length;j++)
{
stack.push(pushed[j]);
while(!stack.isEmpty() && stack.peek()==popped[i])
{
stack.pop();
i++;
}
}
if(i==popped.length)
return true;
return false;
}
}