剑指 Offer 09. 用两个栈实现队列
Posted Billy Miracle
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了剑指 Offer 09. 用两个栈实现队列相关的知识,希望对你有一定的参考价值。
题目描述:
思路:
这玩意不难,但容易想复杂,比如我,我先是保证每次添加后输出栈都是按照队列的顺序了,下面一会儿会给出代码,显然这样会比较麻烦,多遍历了。标准答案就简单了,只在输出栈为空后把输入栈重新压入就好了。
代码:
//傻了吧唧版:
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)
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
![](https://image.cha138.com/20220428/d9c6e484c7224bb09ab07b30c6bc30b2.jpg)
![](https://image.cha138.com/20220428/917579ed77174f0eb27a4f5f2cd3edbb.jpg)
以上是关于剑指 Offer 09. 用两个栈实现队列的主要内容,如果未能解决你的问题,请参考以下文章