zoukankan      html  css  js  c++  java
  • leetCode(37):Implement Queue using Stacks 分类: leetCode 2015-07-14 08:42 157人阅读 评论(0) 收藏

    Implement the following operations of a queue using stacks.

    • push(x) -- Push element x to the back of queue.
    • pop() -- Removes the element from in front of queue.
    • peek() -- Get the front element.
    • empty() -- Return whether the queue is empty.
    Notes:
    • You must use only standard operations of a stack -- which means only push to toppeek/pop from topsize, and is empty operations are valid.
    • Depending on your language, stack may not be supported natively. You may simulate a stack by using a list or deque (double-ended queue), as long as you use only standard operations of a stack.
    • You may assume that all operations are valid (for example, no pop or peek operations will be called on an empty queue).
          两个栈,一个作为压入栈,一个作为弹出栈。当弹出栈为空时,把压入栈中的数据依次弹出并压入到弹出栈中。如果两者均为空,说明队列为空。

    class Queue {
    public:
        // Push element x to the back of queue.
        void push(int x) {
            push_stack.push(x);
        }
    
        // Removes the element from in front of queue.
        void pop(void) {
            if (pop_stack.empty())
    		{
    			while (!push_stack.empty())
    			{
    				pop_stack.push(push_stack.top());
    				push_stack.pop();
    			}
    			if (!pop_stack.empty())
    				pop_stack.pop();
    		}
    		else
    		{
    			pop_stack.pop();
    		}
        }
    
        // Get the front element.
        int peek(void) {
            if (pop_stack.empty())
    		{
    			while (!push_stack.empty())
    			{
    				pop_stack.push(push_stack.top());
    				push_stack.pop();
    			}
    			if (!pop_stack.empty())
    				return pop_stack.top();
    		}
    		else
    		{
    			return pop_stack.top();
    		}
    		return 0;
        }
    
        // Return whether the queue is empty.
        bool empty(void) {
            if (pop_stack.empty() && push_stack.empty())
    			return true;
    		else
    			return false;
        }
        
    private:
    	stack<int> pop_stack;
    	stack<int> push_stack;
    };


  • 相关阅读:
    LAMP搭建示例
    MySQL主从
    list多字段去重
    mysql按照某一个条件进行分组统计,同时又要保证一个相同字段的数据只统计一次
    sentinel自定义异常处理
    sentinel规则持久化
    zookeeper
    shiro
    iframe之间传递参数
    自定义标签
  • 原文地址:https://www.cnblogs.com/zclzqbx/p/4687062.html
Copyright © 2011-2022 走看看