题目:

class Solution {
public:
    bool validateStackSequences(vector<int>& pushed, vector<int>& popped) {      //模拟,pushed里的每一个元素都必定经过入栈和出栈的操作。
        stack<int> st;
        for(int i=0,j=0;i<pushed.size();i++){           //遍历pushed数组,每一个元素都进行一次入栈操作
            st.push(pushed[i]);
            while(!st.empty()&&st.top()==popped[j]){    //循环判断当前栈顶元素是否出栈。栈不为空且当前popped元素与栈顶元素相等时进行出栈操作,否则继续入栈。
                st.pop();                               //st.pop()和j++相当于两个数组同时出栈
                j++;
            }                                           //若无法出栈,则继续入栈
        }
        return st.empty();                              //最后栈为空才是正常的   
    }
};

以上代码转自力扣官方题解

posted on 2023-08-02 21:24  孜孜不倦fly  阅读(10)  评论(0)    收藏  举报