提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档
Leetcode
232. 用栈实现队列
● 今日学习的Leetcode链接
● 自己看到题目的第一想法
因为出队列时,队列里肯定有元素,所以更简单了
两个栈,进去进一个栈,出的时候要保证出的栈是空的,然后将进栈内的元素全部倒入新栈。
● 看完代码随想录之后的想法
无
● 自己实现过程中遇到哪些困难
- Stack stackIn = new Stack<>(); 栈是这样定义的
- 栈是java.util中的类,但官方更推荐用队列实现栈
● 今日收获,记录一下自己的学习时长
easy
class MyQueue {
Stack<Integer> stackIn;
Stack<Integer> stackOut;
public MyQueue() {
stackIn = new Stack<Integer>();
stackOut = new Stack<Integer>();
}
public void push(int x) {
stackIn.push(x);
}
public int pop() {
if(!stackOut.empty()){
return stackOut.pop();
}
while(!stackIn.empty()){
stackOut.push(stackIn.pop());
}
return stackOut.pop();
}
public int peek() {
if(!stackOut.empty()){
return stackOut.peek();
}
while(!stackIn.empty()){
stackOut.push(stackIn.pop());
}
return stackOut.peek();
}
public boolean empty() {
if(stackIn.empty() && stackOut.empty()){
return true;
}
return false;
}
}
225. 用队列实现栈
● 今日学习的Leetcode链接
● 自己看到题目的第一想法
用两个队列可以实现,形成一个环
但是一个队列也可以成为一个环
● 看完代码随想录之后的想法
Dequeue也可实现 (双端队列)
● 自己实现过程中遇到哪些困难
- LinkedList<>实现了Queue<>接口,Queue<>接口继承了Collection接口
- Queue queue = new LinkedList<>();
● 今日收获,记录一下自己的学习时长
六
class MyStack {
Queue<Integer> queue;
public MyStack() {
queue = new LinkedList<>();
}
public void push(int x) {
queue.offer(x);
int num = queue.size()-1;
while(num>0){
queue.offer(queue.poll());
num--;
}
}
public int pop() {
return queue.poll();
}
public int top() {
return queue.peek();
}
public boolean empty() {
return queue.isEmpty();
}
}