zoukankan      html  css  js  c++  java
  • leetCode(44):Implement Stack using Queues 分类: leetCode 2015-07-19 19:29 50人阅读 评论(0) 收藏

    Implement the following operations of a stack using queues.

    • push(x) -- Push element x onto stack.
    • pop() -- Removes the element on top of the stack.
    • top() -- Get the top element.
    • empty() -- Return whether the stack is empty.
    Notes:
    • You must use only standard operations of a queue -- which means only push to backpeek/pop from frontsize, and is empty operations are valid.
    • Depending on your language, queue may not be supported natively. You may simulate a queue by using a list or deque (double-ended queue), as long as you use only standard operations of a queue.
    • You may assume that all operations are valid (for example, no pop or top operations will be called on an empty stack).

    两个队列,永远有一个为空,插入时,插入到不为空的队列中,如果都为空则任意;弹出时,把不为空队列中的所有元素(最后一个除外)转移到另一队列当中,并将最后一个不插入,直接删除即可。如果两个队列均为空,则说明栈为空。


    class Stack {
    public:
        // Push element x onto stack.
        void push(int x) {//在非空队列中插入
            if (aqueue.empty())
    			bqueue.push(x);
    		else
    			aqueue.push(x);
        }
    
        // Removes the element on top of the stack.
        void pop() {
            if (aqueue.empty())
    		{//转移
    			while (bqueue.size() != 1)
    			{
    				int tmp = bqueue.front();
    				aqueue.push(tmp);
    				bqueue.pop();
    			}
    			bqueue.pop();
    		}
    		else
    		{
    			while (aqueue.size() != 1)
    			{
    				int tmp = aqueue.front();
    				bqueue.push(tmp);
    				aqueue.pop();
    			}
    			aqueue.pop();
    		}
        }
    
        // Get the top element.
        int top() {
            int tmp;
    		if (aqueue.empty())
    		{			
    			while (!bqueue.empty())
    			{
    				tmp= bqueue.front();
    				aqueue.push(tmp);
    				bqueue.pop();
    			}
    		}
    		else
    		{
    			while (!aqueue.empty())
    			{
    				tmp = aqueue.front();
    				bqueue.push(tmp);
    				aqueue.pop();
    			}
    		}
    		return tmp;
        }
    
        // Return whether the stack is empty.
        bool empty() {
            return (aqueue.empty() && bqueue.empty());
        }
    private:
        queue<int> aqueue;
        queue<int> bqueue;
    };



  • 相关阅读:
    [转载]PHP中PSR-[0-4]规范
    Git忽略规则及.gitignore规则不生效的解决办法
    nginx配置tp5的pathinfo模式并隐藏后台入口文件
    php过滤&nbsp;字符
    使用ajax的post方式下载excel
    scws简单中文分词
    php的api及登录的权限验证
    对钩子的理解
    基于角色的权限控制
    微信开发之SVN提交代码与FTP同步到apache的根目录
  • 原文地址:https://www.cnblogs.com/zclzqbx/p/4687053.html
Copyright © 2011-2022 走看看