判断一个序列是否为正确的出栈序列
题目:判断当前序列是否为arr序列的出栈序列
入栈序列 arr[ ] = {1,2,3,4,5}
A : order [ ] = {1,2,5,3,4}
B : order [ ] = {3,2,1,5,4}
C : order [ ] = {2,3,5,1,4}
思路:
举例:
arr[ ] = {1,2,3}
order[ ] = {2,1,3}
- 建立堆栈
- arr[ j ] 入栈,j++, 并将stack.peek() 与 order[ i ] 比较,若相等则出栈,若不等则arr[ j ]继续入栈,j++
- 此时stack.peek() == order[ i ] ,出栈,i++,继续比较stack.peek() 与 order[ i ]
- 此时依旧stack.peek() == order[ i ] ,出栈,i++
注:防止空栈异常:防止栈为空时获取栈顶元素stack.peek()与order[ i ]比较
- 继续入栈arr[ j ],重复上步,直至 i ==order.length 或者 stack.isEmpty() 时结果为true,若不满足上述条件则为 false
代码测试
import java.util.Stack;
public class IfStack<T> {
public static <T> boolean isStackOutOrder(T[]arr,T[