思路

pushV的内容是依次输入的内容,用for即可。
在每次压栈时进行判断,栈顶元素是否和popV中的数据相同。
如果相同popV指针向后移动,依次进行匹配(这里需要循环判断),因为每轮判断中只能压入一个元素,但是弹出可以连续弹出。

  1. class Solution {
  2. public:
  3. bool isPopOrder(vector<int> pushV,vector<int> popV) {
  4. // if(pushV.size())
  5. if(pushV.size() != popV.size()) return false;
  6. else if(pushV.size() == 0) return true;
  7. stack<int> stk;
  8. for(int i = 0,j = 0; i < pushV.size(); i ++){
  9. int x = pushV[i];
  10. stk.push(x);
  11. while(stk.size() && stk.top() == popV[j]){
  12. stk.pop();
  13. j++;
  14. }
  15. }
  16. return stk.empty();
  17. }
  18. };