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

1.思路:使用一个辅助辅助栈,对于pushed中的元素,每次将一个元素入栈,然后栈顶元素和出栈顺序的元素相比,如果相同,则将元素出栈,也就是用在辅助栈上模拟入栈和出栈顺序,最后栈为空,则说明出栈顺序是可行的,否则不行。

2代码:

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() && popped[i] == Stack.peek()){
                Stack.pop();
                i++;
            }
        }
        return Stack.isEmpty();
    }
}

3.复杂度分析:时间o(N),最多有N个元素入栈,N为元素个数

上一篇:leetcode :[22. 括号生成](https://leetcode-cn.com/problems/generate-parentheses/)


下一篇:Let’s Make C++ Great Again——C++11部分内容