#include <deque> #include <type_traits> class Solution { public: /** * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 * * * @param pushV int整型vector * @param popV int整型vector * @return bool布尔型 */ bool IsPopOrder(vector<int>& pushV, vector<int>& popV) { // write code here //考虑双指针一个指向压栈,一个指向出栈; int lpush = pushV.size(); //int lpop = popV.size();//2个长度相等的 int a = 0;int b = 0 ; deque<int> s;//给个栈 s.push_back(pushV[a]); while(a<lpush&&b<lpush){//遍历条件是2个都要在长度里面 if(!s.empty()&&s.back()==popV[b]){ s.pop_back(); b++; // a++; } else{ a++; s.push_back(pushV[a]); } // cout<<s.back()<<a<<endl;; } return s.empty(); } };
需要考虑到空栈不能比大小,不然会越界报错
if(!s.empty()&&s.back()==popV[b])