0
点赞
收藏
分享

微信扫一扫

剑指offer 31:栈的压入、弹出序列

飞鸟不急 2022-01-13 阅读 79

题目描述:

示例1

示例2

解法:辅助栈

思路:

使用一个栈来进行入栈,并遍历pushA。当栈不为空则开始跟popA数组进行比较,若相等则将该元素弹出栈。最后看栈是否为空,如果为空则证明popA是pushA的出栈数组。

如示例1:

 如示例2:

 

代码:

import java.util.*;

public class Solution {
    public boolean IsPopOrder(int [] pushA,int [] popA) {
        //当两个序列长度不相等时,直接返回false
      if(pushA.length != popA.length){
          return false;
      }
        //下标
       int index = 0;
       Stack<Integer> stack = new Stack<>();
        for(int pushVal : pushA){
            //压入序列入栈
            stack.push(pushVal);
            //当栈不为空并且栈顶元素等于压入序列的值时,出栈并index+1
            while(!stack.isEmpty() && popA[index] == stack.peek()){
                stack.pop();
                index++
            }
        }
    }
}
举报

相关推荐

0 条评论