推 UsadaBeguora: 大獅 08/28 16:51
https://leetcode.com/problems/implement-stack-using-queues/description/
225. Implement Stack using Queues
請用兩個 Queue 實現 Stack 的 psuh、pop、top、isEmpty 操作。
Example 1:
Input
["MyStack", "push", "push", "top", "pop", "empty"]
[[], [1], [2], [], [], []]
Output
[null, null, null, 2, 2, false]
Explanation
MyStack myStack = new MyStack();
myStack.push(1);
myStack.push(2);
myStack.top(); // return 2
myStack.pop(); // return 2
myStack.empty(); // return False
思路:
1.Queue pop 的是第一個加入的元素,所以我們把所有元素 Pop 出來暫存,並保留/移除
最後一個元素返回即可。
Java Code:
---------------------------------------------
class MyStack {
private Queue<Integer> queue;
public MyStack() {
queue = new LinkedList<>();
}
public void push(int x) {
queue.offer(x);
}
public int pop() {
Queue<Integer> temp = new LinkedList<>();
while (queue.size() != 1) {
temp.offer(queue.poll());
}
int item = queue.poll();
queue = temp;
return item;
}
public int top() {
Queue<Integer> temp = new LinkedList<>();
while (queue.size() != 1) {
temp.offer(queue.poll());
}
int item = queue.poll();
temp.offer(item);
queue = temp;
return item;
}
public boolean empty() {
return queue.isEmpty();
}
}
---------------------------------------------
--
https://i.imgur.com/sjdGOE3.jpg
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 122.100.73.13 (臺灣)
※ 文章網址: https://www.ptt.cc/bbs/Marginalman/M.1693212636.A.385.html