其实这个题很简单,直接模拟即可,时间和空间复杂复杂度都是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(); } };