面试题 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(); */