LeetCode 225题用队列实现栈(Implement Stack using Queues) Java语言求解
Posted code随笔
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了LeetCode 225题用队列实现栈(Implement Stack using Queues) Java语言求解相关的知识,希望对你有一定的参考价值。
链接
https://leetcode-cn.com/problems/implement-stack-using-queues/
思路
首先演示push()操作;
将元素依次进入队1,进入时用top元素保存当前进入的元素;
如下图:
然后演示pop()操作;
先将除队1中的最后一个元素出队并进入队2,入队2时用top存储入队元素;
再将队列1和队列2进行互换即可。
如下图:
代码
import java.util.LinkedList;
import java.util.Queue;
class MyStack {
private Queue<Integer> queue_1 = new LinkedList<>();
private Queue<Integer> queue_2 = new LinkedList<>();
private int top;
/** Initialize your data structure here. */
public MyStack() {
}
/** Push element x onto stack. */
public void push(int x) {
queue_1.add(x);
top = x;
}
/** Removes the element on top of the stack and returns that element. */
public int pop() {
if(empty()){
throw new RuntimeException("MyStack空了!");
}
while(queue_1.size() > 1){
top = queue_1.remove();
queue_2.add(top);
}
int last_ele = queue_1.remove();
Queue<Integer> queue_temp = queue_1;
queue_1 = queue_2;
queue_2 = queue_temp;
return last_ele;
}
/** Get the top element. */
public int top() {
if(empty()){
throw new RuntimeException("MyStack空了!");
}
return top;
}
/** Returns whether the stack is empty. */
public boolean empty() {
return queue_1.isEmpty() && queue_2.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();
*/
欢迎关注
扫下方二维码即可关注:,微信公众号:code随笔
以上是关于LeetCode 225题用队列实现栈(Implement Stack using Queues) Java语言求解的主要内容,如果未能解决你的问题,请参考以下文章