LeetCode232 Implement Queue using Stacks Java 题解
2024-09-21 03:51:46
题目:
Implement the following operations of a queue using stacks.
- push(x) -- Push element x to the back of queue.
- pop() -- Removes the element from in front of queue.
- peek() -- Get the front element.
- empty() -- Return whether the queue is empty.
Notes:
- You must use only standard operations of a stack -- which means only
push
,
to toppeek/pop from top
,size
,
andis empty
operations are valid. - Depending on your language, stack may not be supported natively. You may simulate a stack by using a list or deque (double-ended queue), as long as you use only standard operations of a stack.
- You may assume that all operations are valid (for example, no pop or peek operations will be called on an empty queue).
解题:
用栈实现队列,这个比用队列实现栈要麻烦一些,这里用到两个栈,两种思路。第一种就是在进栈的时候,把栈逆序放在另外一个栈,出的时候直接出另外一个栈就能够了。另外一种思路。进栈的时候不做不论什么处理。出栈的时候把栈逆序放在另外一个栈。出另外一个栈。以下就是两种的代码实现。
在进栈的时候进行处理:
class MyQueue {
// Push element x to the back of queue.
Stack<Integer> stack=new Stack<>();
Stack<Integer> stack2=new Stack<>(); public void push(int x) {
while(!stack.isEmpty())
{
stack2.push(stack.pop());
}
stack2.push(x);
while(!stack2.isEmpty())
{
stack.push(stack2.pop());
} } // Removes the element from in front of queue.
public void pop() {
stack.pop();
} // Get the front element.
public int peek() {
return stack.peek();
} // Return whether the queue is empty.
public boolean empty() {
return stack.isEmpty();
}
}
在出栈的时候进行处理:
class MyQueue2 {
// Push element x to the back of queue.
Stack<Integer> stack=new Stack<>();
Stack<Integer> stack2=new Stack<>(); public void push(int x) {
while(!stack2.isEmpty())
stack.push(stack2.pop());
stack.push(x); } // Removes the element from in front of queue.
public void pop() { while(!stack.isEmpty())
stack2.push(stack.pop());
stack2.pop(); } // Get the front element.
public int peek() {
while(!stack.isEmpty())
stack2.push(stack.pop());
return stack2.peek(); } // Return whether the queue is empty.
public boolean empty() {
while(!stack2.isEmpty())
stack.push(stack2.pop());
return stack.isEmpty();
}
}
最新文章
- mui,css3 querySelector,appendChild,style.display,insertBefore
- hadoop运行原理之Job运行(四) JobTracker端心跳机制分析
- CSAPP学习笔记(异常控制流1)
- 必须知道的八大种排序算法【java实现】(三) 归并排序算法、堆排序算法详解
- python输出1到100之和的几种方法
- 方法覆盖(override)”的要点
- C++ 堆 和 堆 分析
- 关于Java 实现抽象类的抽象方法的特性的利用---面向切面
- leetcode(js)算法之914卡牌分组
- Linux下用gSOAP开发Web Service服务端和客户端程序
- 接口调用,输出结果为Json格式(ConvertTo-Json),提交参数给URL(WebRequest)
- mysql与redis的区别与联系
- JS阻止冒泡方法(转)
- LVM的创建与管理
- DBArtist之Oracle入门第3步: 安装配置PL/SQL Developer
- vue+element-ui中的图片获取与上传
- DAY2敏捷冲刺
- OpenCV2.3.1在Win7+VS2010下的配置过程
- Springboot读取配置文件的两种方法
- logback.xml