- 压入、弹出序列为空,或者大小不一致,返回false;
- 定义栈,依次放入压入序列,如果栈不为空,且栈顶元素等于弹出序列元素,弹出栈顶元素,对比下一弹出序列元素;
- 最后栈为空,返回true,否则返回false。
class Solution {
public:
bool IsPopOrder(vector<int> pushV,vector<int> popV) {
if (pushV.empty() || popV.empty() || pushV.size() != popV.size()) {
return false;
}
stack<int> st;
int j = 0;
for (int i = 0; i < pushV.size(); i++) {
st.push(pushV[i]);
while (!st.empty() && st.top() == popV[j]) {
st.pop();
j++;
}
}
return st.empty();
}
};