其他分享
首页 > 其他分享> > 剑指 Offer 31. 栈的压入、弹出序列

剑指 Offer 31. 栈的压入、弹出序列

作者:互联网

https://leetcode-cn.com/problems/zhan-de-ya-ru-dan-chu-xu-lie-lcof/

思路

创建一个辅助栈,将第一个序列按照压入顺序压入辅助栈,此时判断辅助栈栈顶元素与第二序列的第i个元素是否相等,如果不相等,第一序列继续压,如果辅助栈的栈顶与第二序列的当前节点相等,把辅助栈的栈顶弹出,并且把第二序列的当前指针右移一位。

正解代码

class Solution {   
    public boolean validateStackSequences(int[] pushed, int[] popped) {
        Stack<Integer> stack = new Stack<>();
        int i = 0;
        for(int num : pushed){
            stack.push(num);
            while(!stack.isEmpty() && stack.peek() == popped[i]){
                stack.pop();
                i++;
            }
        }
        return stack.isEmpty();
    }
}

标签:辅助,压入,Offer,int,31,pushed,序列,stack
来源: https://www.cnblogs.com/zhbeii/p/15422406.html