#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])

京公网安备 11010502036488号