题解 | #栈的压入、弹出序列#
栈的压入、弹出序列
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,说明入栈元素和出栈元素是可行的
查看14道真题和解析