1. 程式人生 > 其它 >946. 驗證棧序列

946. 驗證棧序列

給定pushed和popped兩個序列,每個序列中的 值都不重複,只有當它們可能是在最初空棧上進行的推入 push 和彈出 pop 操作序列的結果時,返回 true;否則,返回 false。

來源:力扣(LeetCode)
連結:https://leetcode-cn.com/problems/validate-stack-sequences
著作權歸領釦網路所有。商業轉載請聯絡官方授權,非商業轉載請註明出處。

import java.util.Stack;

class Solution {
    public boolean validateStackSequences(int[] pushed, int[] popped) {
        int pushIdx = 0, popIdx = 0;
        Stack<Integer> stack = new Stack<>();
        while (popIdx < popped.length) {
            while (pushIdx < pushed.length && (stack.isEmpty() || stack.peek() != popped[popIdx])) {
                stack.push(pushed[pushIdx++]);
            }
            if (stack.peek() != popped[popIdx]) {
                return false;
            }
            stack.pop();
            popIdx++;
        }
        return true;
    }
}
心之所向,素履以往 生如逆旅,一葦以航