题目描述:
思路:
这玩意不难,但容易想复杂,比如我,我先是保证每次添加后输出栈都是按照队列的顺序了,下面一会儿会给出代码,显然这样会比较麻烦,多遍历了。标准答案就简单了,只在输出栈为空后把输入栈重新压入就好了。
代码:
//傻了吧唧版:
class CQueue {
private:
stack<int> inStack, outStack;
void inToOut() {
while (!inStack.empty()) {
outStack.push(inStack.top());
inStack.pop();
}
}
void outToIn() {
while (!outStack.empty()) {
inStack.push(outStack.top());
outStack.pop();
}
}
public:
CQueue() {
}
void appendTail(int value) {
outToIn();
inStack.push(value);
inToOut();
}
int deleteHead() {
if (outStack.empty()) {
return -1;
}
int value = outStack.top();
outStack.pop();
return value;
}
};
/**
* Your CQueue object will be instantiated and called as such:
* CQueue* obj = new CQueue();
* obj->appendTail(value);
* int param_2 = obj->deleteHead();
*/
//标准答案:
class CQueue {
private:
stack<int> inStack, outStack;
void in2out() {
while (!inStack.empty()) {
outStack.push(inStack.top());
inStack.pop();
}
}
public:
CQueue() {}
void appendTail(int value) {
inStack.push(value);
}
int deleteHead() {
if (outStack.empty()) {
if (inStack.empty()) {
return -1;
}
in2out();
}
int value = outStack.top();
outStack.pop();
return value;
}
};
作者:LeetCode-Solution
链接:https://leetcode-cn.com/problems/yong-liang-ge-zhan-shi-xian-dui-lie-lcof/solution/mian-shi-ti-09-yong-liang-ge-zhan-shi-xian-dui-l-3/
来源:力扣(LeetCode)
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。