题解 | #栈的压入、弹出序列#
栈的压入、弹出序列
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 stack<int> data; int j = 0; for (int i = 0; i < pushV.size(); i++) { data.push(pushV[i]); while (data.size() > 0 && popV[j] == data.top()) { data.pop(); j++; } } return data.empty(); } };
代码思路:首先创建一个辅助栈data,再将pushV栈的所有元素入栈。再进行比较,若弹出栈popV的元素等于栈顶元素,则弹出辅助栈的元素,若最后辅助栈为空,返回true,说明入栈元素和出栈元素是可行的