剑指 Offer 第31题:栈的压入、弹出序列

2022-07-27  本文已影响0人  放开那个BUG

1、前言

题目描述

2、思路

思路就是模拟栈的弹出。

首先遍历 pushed 数组,如果与 poped 数组不想等,那么便把 pushed 数组中的元素压栈;如果栈顶的元素与 popped 数组的元素想等,则栈弹出栈顶,并且 popped 数组的元素进1。最后判断栈是否为空。

3、代码

class Solution {
    public boolean validateStackSequences(int[] pushed, int[] popped) {
        if(pushed.length == 0 || popped.length == 0){
            return pushed.length == popped.length;
        }

        Stack<Integer> stack = new Stack<>();
        int j = 0;
        for(int num : pushed){
            stack.push(num);
            while(j < popped.length && !stack.isEmpty() && popped[j] == stack.peek()){
                stack.pop();
                j++;
            }
        }

        return stack.isEmpty();
    }
}
上一篇下一篇

猜你喜欢

热点阅读