【LeetCode 簡單題】62-用棧實現佇列
阿新 • • 發佈:2018-11-04
宣告:
今天是第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 top
,peek/pop from top
,size
, 和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