题解 | #栈的压入、弹出序列#
栈的压入、弹出序列
https://www.nowcoder.com/practice/d77d11405cc7470d82554cb392585106
class Solution {
public:
/**
* 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
*
*
* @param pushV int整型vector
* @param popV int整型vector
* @return bool布尔型
*/
bool IsPopOrder(vector<int>& pushV, vector<int>& popV) {
// write code here
//1 用一个临时容器,进行模拟压入和弹出的情况
vector<int> temp;
//2 进行模拟压入和弹出
int j = 0;
int zhi = 0;
for (j = 0, zhi = 0; zhi < pushV.size();zhi++) {
if (pushV[zhi] !=
popV[j]) { //如果要压入不等于弹出的数据,进临时容器压入
temp.push_back(pushV[zhi]);
}
else {
//如果要压入等于弹出的数据,先进行压入,然后用循环弹出尾部元素
temp.push_back(pushV[zhi]);
while(temp.back() == popV[j] && temp.size()>0){//这里利用栈的特性,一直访问尾部信息
temp.pop_back();//弹出尾部元素
j++;
}
}
}
if (j < pushV.size()) {
return false;
}
else {
return true;
}
}
};
