• LintCode-40.用栈实现队列


    用栈实现队列

    正如标题所述,你需要使用两个栈来实现队列的一些操作。
    队列应支持push(element),pop() 和 top(),其中pop是弹出队列中的第一个(最前面的)元素。
    pop和top方法都应该返回第一个元素的值。

    样例

    比如push(1), pop(), push(2), push(3), top(), pop(),你应该返回1,2和2

    挑战

    仅使用两个栈来实现它,不使用任何其他数据结构,push,pop 和top的复杂度都应该是均摊O(1)的

    标签

    栈 LintCode 版权所有 队列

    code

    class MyQueue {
    public:
        stack<int> stack1;
        stack<int> stack2;
    
        MyQueue() {
            // do intialization if necessary
        }
    
        void push(int element) {
            // write your code here
            stack1.push(element);
        }
        
        int pop() {
            // write your code here
            int data;
            if(stack2.empty()) {
                while(!stack1.empty()) {
                    data = stack1.top();
                    stack2.push(data);
                    stack1.pop();
                }
            }
        
            data = stack2.top();
            stack2.pop();
            return data;
        }
    
        int top() {
            // write your code here
            int data;
            if(stack2.empty()) {
                while(!stack1.empty()) {
                    data = stack1.top();
                    stack2.push(data);
                    stack1.pop();
                }
            }
            else
                data = stack2.top();
            return data;
        }
    };
  • 相关阅读:
    ubuntu播放器
    第一次装ubuntu 没root密码时
    web服务器记录
    socket udp编程步骤
    nfs服务器配置
    带线程函数编译条件
    linux使用一个刚编译驱动方法
    tiny6410_led驱动Makefile
    java-设计模式-外观模式
    java-实现一个简单的java Web容器
  • 原文地址:https://www.cnblogs.com/libaoquan/p/6806599.html
Copyright © 2020-2023  润新知