1.思路:
由于序列中不存在相同的数字,因此可以根据栈先入后出的数据结构特点,可以构建vector 或者 stack 作为辅助栈,进行分析。
2代码:
2.1 用vector模拟栈:
class Solution {
public:
bool IsPopOrder(vector<int> pushV,vector<int> popV) {
if(pushV.size() == 0) return false;
vector<int> s;
for(int i = 0, j = 0; i < pushV.size();) {
s.push_back(pushV[i++]);
while(!s.empty() && j < popV.size() && s.back() == popV[j]) {
s.pop_back();
++j;
}
}
return s.empty();
}
};
2.2 用辅助栈stack
class Solution {
public:
bool IsPopOrder(vector<int> pushV,vector<int> popV) {
if(pushV.size() == 0) return false;
stack<int> s;
for(int i = 0, j = 0; i < pushV.size();) {
s.push(pushV[i++]);
while(!s.empty() && j < popV.size() && s.top() == popV[j]) {
s.pop();
++j;
}
}
return s.empty();
}
};