Leetcode 225. Implement Stack using Queues 用佇列實現棧
題目:
使用佇列實現棧的下列操作:
- push(x) -- 元素 x 入棧
- pop() -- 移除棧頂元素
- top() -- 獲取棧頂元素
- empty() -- 返回棧是否為空
注意:
- 你只能使用佇列的基本操作-- 也就是
push to back
,peek/pop from front
,size
, 和is empty
這些操作是合法的。 - 你所使用的語言也許不支援佇列。 你可以使用 list 或者 deque(雙端佇列)來模擬一個佇列 , 只要是標準的佇列操作即可。
- 你可以假設所有操作都是有效的(例如, 對一個空的棧不會呼叫 pop 或者 top 操作)。
解題思路:
使用一個佇列模擬棧的功能,棧和佇列的區別其實就是資料訪問的順序不同,把佇列調整成棧的資料訪問順序即可模擬棧的功能。
push方法修改資料訪問順序:
1
1 2 -> 2 1
2 1 3 -> 3 2 1
3 2 1 4 -> 4 3 2 1
程式碼實現:
class MyStack { Queue<Integer> queue; /** Initialize your data structure here. */ public MyStack() { queue = new LinkedList<Integer>(); } /** Push element x onto stack. */ public void push(int x) { queue.offer(x); for (int i = 0; i < queue.size() - 1; i ++) { queue.offer(queue.poll()); } } /** Removes the element on top of the stack and returns that element. */ public int pop() { if (!queue.isEmpty()) return queue.poll(); else return 0; } /** Get the top element. */ public int top() { if (!queue.isEmpty()) return queue.peek(); else return 0; } /** Returns whether the stack is empty. */ public boolean empty() { return queue.isEmpty(); } } /** * Your MyStack object will be instantiated and called as such: * MyStack obj = new MyStack(); * obj.push(x); * int param_2 = obj.pop(); * int param_3 = obj.top(); * boolean param_4 = obj.empty(); */
相關文章
- [LeetCode] 232. 225 Implement Queue/Stack using Stacks/QueuesLeetCode
- leetcode 232. Implement Queue using Stacks 用棧實現佇列(簡單)LeetCode佇列
- Day 10| 232.用棧實現佇列 、 225. 用佇列實現棧佇列
- LeetCode225. 用佇列實現棧LeetCode佇列
- LeetCode225.佇列實現棧LeetCode佇列
- 用佇列實現棧佇列
- 用棧實現佇列佇列
- 9. 題目:對佇列實現棧&用棧實現佇列佇列
- 程式碼隨想錄演算法訓練營第第十天 | 232.用棧實現佇列 、225. 用佇列實現棧演算法佇列
- Laravel Queues 佇列應用實戰Laravel佇列
- 10天【程式碼隨想錄演算法訓練營34期】 第五章 棧與佇列part01(● 232.用棧實現佇列 ● 225. 用佇列實現棧)演算法佇列
- LeetCode | 232 Implement Queue Using StacksLeetCode
- 用JavaScript實現棧與佇列JavaScript佇列
- leedcode-用棧實現佇列佇列
- leedcode-用佇列實現棧佇列
- 用2個棧實現佇列佇列
- 通過佇列實現棧OR通過棧實現佇列佇列
- 1201-用棧實現最小佇列佇列
- 力扣-232. 用棧實現佇列力扣佇列
- leetcode155. 最小棧 1441. 用棧操作構建陣列 劍指 Offer 09. 用兩個棧實現佇列LeetCode陣列佇列
- 用佇列實現棧,用棧實現佇列,聽起來有點繞,都搞懂了就掌握了精髓!佇列
- 兩個棧實現佇列佇列
- java集合類——Stack棧類與Queue佇列Java佇列
- 【資料結構】棧(Stack)和佇列(Queue)資料結構佇列
- 題目9:用兩個棧實現佇列佇列
- 程式碼隨想錄:用棧實現佇列佇列
- 程式碼隨想錄:用佇列實現棧佇列
- 兩個棧實現佇列操作佇列
- 《劍指 Offer》棧實現佇列佇列
- 【ZJOF】用來個棧來實現一個佇列佇列
- 面試題之【用兩個棧實現佇列】面試題佇列
- 劍指offer-用兩個棧實現佇列-php佇列PHP
- 劍指offer | 09. 用兩個棧實現佇列佇列
- LeetCode入門指南 之 棧和佇列LeetCode佇列
- 程式碼隨想錄演算法訓練營,9月6日 | 232.用棧實現佇列,225. 用佇列實現棧,20. 有效的括號,1047. 刪除字串中的所有相鄰重複項演算法佇列字串
- 程式碼隨想錄演算法訓練營第十一天|232.用棧實現佇列、225.用佇列實現棧、20.有效的括號、1047.刪除字串中的所有相鄰重複項演算法佇列字串
- Laravel5.4 Queues佇列學習Laravel佇列
- [每日一題] 第七題:用兩個棧實現佇列每日一題佇列