题目:
题解:辅助栈
代码:辅助栈
import java.util.*;
public class 面试题31 {
public static boolean validateStackSequences(int[] pushed, int[] popped)
{
Stack<Integer> stack = new Stack<>();
int k = 0;
for(int i = 0; i < pushed.length; i++)
{
stack.push(pushed[i]); // pushed[i] 入栈
while(!stack.empty() && stack.peek() == popped[k]) // 循环判断与出栈
{
stack.pop();
k++;
}
}
if(stack.empty())
{
return true;
}
else
{
return false;
}
}
public static void main(String[] args) {
int pushed1[] = { 1, 2, 3, 4, 5 };
int popped1[] = { 4, 5, 3, 2, 1 };
boolean res1 = validateStackSequences(pushed1, popped1);
System.out.println(res1);
int pushed2[] = { 1, 2, 3, 4, 5 };
int popped2[] = { 4, 3, 5, 1, 2 };
boolean res2 = validateStackSequences(pushed2, popped2);
System.out.println(res2);
}
}