面试题 03.04. 化栈为队

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

<?php
/**
 * Created by PhpStorm.
 * User: huahua
 * Date: 2020/6/19
 * Time: 下午4:27
 */

/**

实现一个MyQueue类,该类用两个栈来实现一个队列。


示例:

MyQueue queue = new MyQueue();

queue.push(1);
queue.push(2);
queue.peek();  // 返回 1
queue.pop();   // 返回 1
queue.empty(); // 返回 false

说明:

你只能使用标准的栈操作 -- 也就是只有 push to top, peek/pop from top, size 和 is empty 操作是合法的。
你所使用的语言也许不支持栈。你可以使用 list 或者 deque(双端队列)来模拟一个栈,只要是标准的栈操作即可。
假设所有操作都是有效的 (例如,一个空的队列不会调用 pop 或者 peek 操作)。
 */
class MyQueue {
    /**
     * Initialize your data structure here.
     */
    private $queue;
    function __construct() {
        $this->queue= [];
    }

    /**
     * Push element x to the back of queue.
     * @param Integer $x
     * @return NULL
     */
    function push($x) {
        $this->queue[] = $x;
    }

    /**
     * Removes the element from in front of queue and returns that element.
     * @return Integer
     */
    function pop() {
        foreach($this->queue as $key =>$value){
            $pop = $value;
            unset($this->queue[$key]);
            break;
        }
        return $pop;
    }

    /**
     * Get the front element.
     * @return Integer
     */
    function peek() {
        foreach($this->queue as $value){
            return $value;
        }
    }

    /**
     * Returns whether the queue is empty.
     * @return Boolean
     */
    function empty() {
        return empty($this->queue);
    }
}

/**
 * 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();
 */
原文地址:https://www.cnblogs.com/8013-cmf/p/13163753.html