/*
* @lc app=leetcode.cn id=225 lang=java
*
* [225] 用队列实现栈
*/
// @lc code=start
class MyStack {
/**
* 两个队列
* 18/18 cases passed (0 ms)
Your runtime beats 100 % of java submissions
Your memory usage beats 86.73 % of java submissions (40.2 MB)
*/
// public Queue<Integer> que;
// public Queue<Integer> backupQue;
// public MyStack() {
// // 相比 ArrayDeque 这里链表内存占用会少一些
// que = new LinkedList();
// backupQue = new LinkedList();
// }
// public void push(int x) {
// backupQue.add(x);
// Integer val = null;
// while((val = que.poll()) != null){
// backupQue.add(val);
// }
// Queue<Integer> tmpQue = que;
// que = backupQue;
// backupQue = tmpQue;
// }
// public int pop() {
// return que.poll();
// }
// public int top() {
// return que.peek();
// }
// public boolean empty() {
// return que.size() == 0;
// }
/**
* 一个队列
* 18/18 cases passed (0 ms)
Your runtime beats 100 % of java submissions
Your memory usage beats 94.51 % of java submissions (40.2 MB)
*/
public Queue<Integer> que;
public MyStack() {
que = new LinkedList();
}
public void push(int x) {
// 当前队列长度
int len = que.size();
// 将这个元素放入队尾
que.add(x);
// 将 x 前的所有元素弹出,再放入队列,这样可以保证元素顺序符合栈
for(int i = 0; i < len; i++){
// Note: 这里不要再 使用 int变量接受弹出的值,那样会导致 拆装箱
que.add(que.poll());
}
}
public int pop() {
return que.poll();
}
public int top() {
return que.peek();
}
public boolean empty() {
return que.size() == 0;
}
}
/**
* 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();
*/
// @lc code=end
08-07
737
![](https://csdnimg.cn/release/blogv2/dist/pc/img/readCountWhite.png)
03-21
1883
![](https://csdnimg.cn/release/blogv2/dist/pc/img/readCountWhite.png)
10-12
101
![](https://csdnimg.cn/release/blogv2/dist/pc/img/readCountWhite.png)
08-15
1276
![](https://csdnimg.cn/release/blogv2/dist/pc/img/readCountWhite.png)
08-14
1348
![](https://csdnimg.cn/release/blogv2/dist/pc/img/readCountWhite.png)
04-12