其实这个题很简单,直接模拟即可,时间和空间复杂复杂度都是O(n)。
直接根据弹出顺序,努力去模拟可能的压栈和弹栈的顺序。当然,压栈的顺序要严格按照pushV来进行。
class Solution {
public:
bool IsPopOrder(vector<int> pushV,vector<int> popV) {
int i = 0, j = 0;
int n = pushV.size();
if(n<=0) return true;
stack<int> s;
while(j<n) {
if(s.empty() || s.top() != popV[j]){
if(i<n)
s.push(pushV[i++]);
else
return false;
} else {
s.pop();
j++;
}
}
return s.empty();
}
}; 


京公网安备 11010502036488号