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

题目描述

剑指 Offer 31. 栈的压入、弹出序列_第1张图片

思路分析

模拟压栈出栈

代码展示

class Solution {
public:
    bool validateStackSequences(vector<int>& pushed, vector<int>& popped) {
        stack<int> s1;
        int cur = 0;
        for (int i = 0; i < pushed.size(); i++) {
            s1.push(pushed[i]);
            while (cur < popped.size() && !s1.empty()) {
                if (popped[cur] == s1.top()) {
                    s1.pop();
                    cur++;
                }else {
                    break;
                }
            }
        }
        if (s1.empty()) {
            return true;
        }
        return false;
    }
};

结果分析

剑指 Offer 31. 栈的压入、弹出序列_第2张图片
时间复杂度 O(N)
空间复杂度 O(N)

你可能感兴趣的:(《剑指offer》,数据结构,算法,leetcode,栈,c++)