网站建设及维护服务,快餐网站模板,如何在搜索中找到自己做的网站,常州建设局网站为什么打不开今日学习的文章链接和视频链接
leetcode题目地址#xff1a;225. 用队列实现栈 代码随想录题解地址#xff1a;代码随想录
题目简介
请你仅使用两个队列实现一个后入先出#xff08;LIFO#xff09;的栈#xff0c;并支持普通栈的全部四种操作#xff08;push、top、p… 今日学习的文章链接和视频链接
leetcode题目地址225. 用队列实现栈 代码随想录题解地址代码随想录
题目简介
请你仅使用两个队列实现一个后入先出LIFO的栈并支持普通栈的全部四种操作push、top、pop 和 empty。
实现 MyStack 类
void push(int x) 将元素 x 压入栈顶。int pop() 移除并返回栈顶元素。int top() 返回栈顶元素。boolean empty() 如果栈是空的返回 true 否则返回 false 。
看到题目的第一想法(可以贴代码
1. Java Queue类
队列是一种特殊的线性表它只允许在表的前端进行删除操作而在表的后端进行插入操作。
LinkedList类实现了Queue接口因此我们可以把LinkedList当成Queue来用。
class MyStack {QueueInteger q1;QueueInteger q2;public MyStack() {q1 new LinkedList();q2 new LinkedList();}public void push(int x) {if(q1.isEmpty()) q2.offer(x);else q1.offer(x);}public int pop() {if(q1.isEmpty()){dump();return q2.poll();} else{dump();return q1.poll();}}public int top() {if(q1.isEmpty()){dump();int res q2.element();q1.offer(q2.poll());return res;} else{dump();int res q1.element();q2.offer(q1.poll());return res;}}public boolean empty() return q1.isEmpty() q2.isEmpty();public void dump(){if(q1.isEmpty()) while (q2.size() 1) q1.offer(q2.poll());else while (q1.size() 1) q2.offer(q1.poll());}
}
实现过程中遇到哪些困难
无
看完代码随想录之后的想法
【解题思路】Java Queue 的基础操作。
看完视频自己写的ACC
class MyStack {QueueInteger q1;QueueInteger q2;public MyStack() {q1 new LinkedList();q2 new LinkedList();}public void push(int x) {q2.offer(x);while (!q1.isEmpty()) q2.offer(q1.poll());QueueInteger temp q2;q2 q1;q1 temp;}public int pop() {return q1.poll();}public int top() {return q1.element();}public boolean empty() {return q1.isEmpty();}}
学习时长
略 今日收获
1. Java Queue类
队列是一种特殊的线性表它只允许在表的前端进行删除操作而在表的后端进行插入操作。
LinkedList类实现了Queue接口因此我们可以把LinkedList当成Queue来用。
【初始化】QueueString queue new LinkedListString();
队列 Queue接口(LinkeList类) 常用方法
//add()和remove()方法在失败的时候会抛出异常(不推荐) add 增加一个元索 如果队列已满则抛出IIIegaISlabEepeplian异常 remove 移除并返回队列头部的元素 如果队列为空则抛出NoSuchElementException异常 element 返回队列头部的元素 如果队列为空则抛出NoSuchElementException异常 offer 添加一个元素并返回true 如果队列已满则返回false poll 移除并返问队列头部的元素 如果队列为空则返回null peek 返回队列头部的元素 如果队列为空则返回null put 添加一个元素 如果队列满则阻塞 take 移除并返回队列头部的元素 如果队列为空则阻塞 drainTo(list) 一次性取出队列所有元素
queue.isEmpty(), 为空返回true不为空返回false。queue.size(), 为空返回0不为空返回一个大于1的整数。
知识点 remove、element、offer 、poll、peek 其实是属于Queue接口。
2. 【初始化】
QueueString q1 new LinkedListString();
QueueInteger q1 new ArrayDeque();
DequeInteger q1 new ArrayDeque();
3. 双端队列 Deque类 常用方法
由于Deque继承了Queue接口因此它继承了Queue接口的所有方法Deque还包括以下方法 addFirst() - 在双端队列的开头添加指定的元素。如果双端队列已满则引发异常。 addLast() - 在双端队列的末尾添加指定的元素。如果双端队列已满则引发异常。 offerFirst() - 在双端队列的开头添加指定的元素。如果双端队列已满则返回false。 offerLast() - 在双端队列的末尾添加指定的元素。如果双端队列已满则返回false。 getFirst() - 返回双端队列的第一个元素。如果双端队列为空则引发异常。 getLast() - 返回双端队列的最后一个元素。如果双端队列为空则引发异常。 peekFirst() - 返回双端队列的第一个元素。如果双端队列为空则返回null。 peekLast() - 返回双端队列的最后一个元素。如果双端队列为空则返回null。 removeFirst() - 返回并删除双端队列的第一个元素。如果双端队列为空则引发异常。 removeLast() - 返回并删除双端队列的最后一个元素。如果双端队列为空则引发异常。 pollFirst() - 返回并删除双端队列的第一个元素。如果双端队列为空则返回null。 pollLast() - 返回并删除双端队列的最后一个元素。如果双端队列为空则返回null。