题目:

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(); //最后栈为空才是正常的
}
};
以上代码转自力扣官方题解
浙公网安备 33010602011771号