• 232. 用栈实现队列


    地址:https://leetcode-cn.com/problems/implement-queue-using-stacks/

    <?php
    
    /**
    232. 用栈实现队列
    使用栈实现队列的下列操作:
    
    push(x) -- 将一个元素放入队列的尾部。
    pop() -- 从队列首部移除元素。
    peek() -- 返回队列首部的元素。
    empty() -- 返回队列是否为空。
    示例:
    
    MyQueue queue = new MyQueue();
    
    queue.push(1);
    queue.push(2);
    queue.peek();  // 返回 1
    queue.pop();   // 返回 1
    queue.empty(); // 返回 false
     */
    class MyQueue {
        /**
         * Initialize your data structure here.
         */
        private $stackPush;
        private $stackPop;
    
        function __construct() {
            $this->stackPush = new SplStack();
            $this->stackPop = new SplStack();
        }
    
        /**
         * Push element x to the back of queue.
         * @param Integer $x
         * @return NULL
         */
        function push($x) {
            $this->stackPush->push($x);
        }
    
        /**
         * Removes the element from in front of queue and returns that element.
         * @return Integer
         */
        function pop() {
            if ($this->stackPop->isEmpty()){
                $this->shift();
            }
            return $this->stackPop->pop();
    
        }
    
        function shift(){
            while(!$this->stackPush->isEmpty()){
                $this->stackPop->push($this->stackPush->pop());
            }
        }
    
        /**
         * Get the front element.
         * @return Integer
         */
        function peek() {
            if ($this->stackPop->isEmpty()){
                $this->shift();
            }
            return $this->stackPop->top();
        }
    
        /**
         * Returns whether the queue is empty.
         * @return Boolean
         */
        function empty() {
            return $this->stackPop->isEmpty() && $this->stackPush->isEmpty();
        }
    }
    
    
    /**
     * Your MyQueue object will be instantiated and called as such:
     * $obj = MyQueue();
     * $obj->push($x);
     * $ret_2 = $obj->pop();
     * $ret_3 = $obj->peek();
     * $ret_4 = $obj->empty();
     */
    $query = new MyQueue();
    $query->push(1);
    $query->push(2);
    echo $query->peek();  // 返回 1
    echo $query->pop();   // 返回 1
    echo $query->empty(); // 返回 false
  • 相关阅读:
    文件的初级功能
    Scanner的用法
    界面制作小例
    初学Java感想
    el-table合计栏未显示的问题
    推荐一些团队博客和个人博客地址
    大数加法
    汇编语言画圆
    Java一个简单的文件工具集
    css选择器
  • 原文地址:https://www.cnblogs.com/8013-cmf/p/12680846.html
Copyright © 2020-2023  润新知