一、题目

二、思路及代码 借助一个辅助栈来模拟入栈过程, ①在入栈之前先判断当前要入栈的元素是否与出栈数组当前元素相同, ② 如果不相同就入栈; ③如果相同就不用入栈了(不入栈=出栈),然后再依次取出栈的栈顶元素看是否与出栈数组当前值相同,相同的话就依次出栈,知道不再相等或者全部出栈; ④若入栈元素还没有遍历完,就继续重复前三个步骤

class Solution {

public:

/**

* 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可

*

*

* @param pushV int整型vector

* @param popV int整型vector

* @return bool布尔型

*/

bool IsPopOrder(vector& pushV, vector& popV) {

// write code here

int i=0;

int j=0;

for(i,j;i

//相同就不入栈

if(pushV[i]==popV[j]){

j++;

//遍历栈顶元素,若与出栈元素相同就出栈

while(j

j++;

st.pop();

}

}else{

//不相同就入栈

st.push(pushV[i]);

}

//每处理完一个入栈数组元素就+1

i++;

}

if(st.empty()) return true;

return false;

}

private:

stackst;

};

好文阅读

评论可见,请评论后查看内容,谢谢!!!评论后请刷新页面。