1. 程式人生 > 實用技巧 >面試題 03.04. 化棧為隊

面試題 03.04. 化棧為隊

實現一個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 操作)。

來源:力扣(LeetCode)
連結:https://leetcode-cn.com/problems/implement-queue-using-stacks-lcci

/**
 * Initialize your data structure here.
 */
var MyQueue = function() {
    this.dataBase=[];
};

/**
 * Push element x to the back of queue. 
 * @param {number} x
 * @return {void}
 */
MyQueue.prototype.push = function
(x) { this.dataBase.push(x); }; /** * Removes the element from in front of queue and returns that element. * @return {number} */ MyQueue.prototype.pop = function() { return this.dataBase.shift(); }; /** * Get the front element. * @return {number} */ MyQueue.prototype.peek = function() {
return this.dataBase[0]; }; /** * Returns whether the queue is empty. * @return {boolean} */ MyQueue.prototype.empty = function() { return this.dataBase.length===0; }; /** * Your MyQueue object will be instantiated and called as such: * var obj = new MyQueue() * obj.push(x) * var param_2 = obj.pop() * var param_3 = obj.peek() * var param_4 = obj.empty() */