牛客网刷题java之输入两个整数序列,第一个序列表示栈的压入顺序,请判断第二个序列是否可能为该栈的弹出顺序。

题目:

输入两个整数序列,第一个序列表示栈的压入顺序,请判断第二个序列是否可能为该栈的弹出顺序。假设压入栈的所有数字均不相等。例如序列1,2,3,4,5是某栈的压入顺序,序列4,5,3,2,1是该压栈序列对应的一个弹出序列,但4,3,5,1,2就不可能是该压栈序列的弹出序列。(注意:这两个序列的长度是相等的)

思路:

牛客网刷题java之输入两个整数序列,第一个序列表示栈的压入顺序,请判断第二个序列是否可能为该栈的弹出顺序。_第1张图片

代码需要注意的地方:

导入包

判断为空

while((!stack.isEmpty())&&stack.peek()==popA[index])条件

代码:

import java.util.ArrayList;
//这个地方得导入栈的包
import java.util.Stack;
public class Solution {
    public boolean IsPopOrder(int [] pushA,int [] popA) 
    {
        //如果他们之间有一个为空,则是不合法的,直接返回false
        if(pushA==null&&popA==null)
        {
            return false;
        }
        //创建一个辅助栈来模拟入栈出栈的过程
        Stack stack=new Stack();
        //定义一个index来记录出栈popA的位置
        int index=0;
        //循环,一直到所有内容入栈完毕
        for(int i=0;i

 

你可能感兴趣的:(java,剑指offer,链表,第一个序列表示栈的压入)