1. 程式人生 > >【LeetCode 簡單題】62-用棧實現佇列

【LeetCode 簡單題】62-用棧實現佇列

宣告:

今天是第62道題。使用棧實現佇列的相關操作。以下所有程式碼經過樓主驗證都能在LeetCode上執行成功,程式碼也是借鑑別人的,在文末會附上參考的部落格連結,如果侵犯了博主的相關權益,請聯絡我刪除

(手動比心ღ( ´・ᴗ・` ))

正文

題目:使用棧實現佇列的下列操作:

  • push(x) -- 將一個元素放入佇列的尾部。
  • pop() -- 從佇列首部移除元素。
  • peek() -- 返回佇列首部的元素。
  • empty() -- 返回佇列是否為空。

示例:

MyQueue queue = new MyQueue();

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

說明:

  • 你只能使用標準的棧操作 -- 也就是隻有 push to toppeek/pop from topsize, 和 is empty 操作是合法的。
  • 你所使用的語言也許不支援棧。你可以使用 list 或者 deque(雙端佇列)來模擬一個棧,只要是標準的棧操作即可。
  • 假設所有操作都是有效的 (例如,一個空的佇列不會呼叫 pop 或者 peek 操作)。

解法1。push用append實現,pop用pop(0)實現,top用stack[0]實現,通過下標訪問,empty通過判斷len(stack)==0來實現。

執行用時: 24 ms, 在Implement Queue using Stacks的Python提交中擊敗了95.24%的使用者。

class MyQueue:
    def __init__(self):
        """
        Initialize your data structure here.
        """
        self.stack = []


    def push(self, x):
        """
        Push element x to the back of queue.
        :type x: int
        :rtype: void
        """
        self.stack.append(x)


    def pop(self):
        """
        Removes the element from in front of queue and returns that element.
        :rtype: int
        """
        return self.stack.pop(0)
        # V 2.0:res = self.stack[0]; del self.stack[0]; return res


    def peek(self):
        """
        Get the front element.
        :rtype: int
        """
        return self.stack[0]


    def empty(self):
        """
        Returns whether the queue is empty.
        :rtype: bool
        """
        return len(self.stack) == 0

結尾

解法1:LeetCode