剑指 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)
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
创作打卡挑战赛 赢取流量/现金/CSDN周边激励大奖

以上是关于剑指 Offer 09. 用两个栈实现队列的主要内容,如果未能解决你的问题,请参考以下文章

用两个栈实现队列Java实现[剑指offer]

双栈实现队列剑指 Offer 09. 用两个栈实现队列

剑指 Offer 09. 用两个栈实现队列(简单)

剑指 Offer 09. 用两个栈实现队列(简单)

剑指 Offer 09. 用两个栈实现队列(简单)

剑指 Offer 09. 用两个栈实现队列