题解 | #栈的压入、弹出序列#
栈的压入、弹出序列
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; } } };