【LeetCode】232. 用栈实现队列(Stack类 & Vector类)
2023-12-21 21:43:13
??今日学习的文章链接和视频链接
leetcode题目地址:232. 用栈实现队列
?代码随想录题解地址:代码随想录
题目简介
请你仅使用两个栈实现先入先出队列。队列应当支持一般队列支持的所有操作(push
、pop
、peek
、empty
):
实现?MyQueue
?类:
void push(int x)
?将元素 x 推到队列的末尾int pop()
?从队列的开头移除并返回元素int peek()
?返回队列开头的元素boolean empty()
?如果队列为空,返回?true
?;否则,返回?false
看到题目的第一想法(可以贴代码)
1. Java Stack 类
栈是Vector的一个子类,它实现了一个标准的后进先出的栈。
2.?Java Vector 类
Vector 类实现了一个动态数组。和 ArrayList 很相似,但是两者是不同的:
- Vector 是同步访问的。
- Vector 包含了许多传统的方法,这些方法不属于集合框架。
Vector 主要用在事先不知道数组的大小,或者只是需要一个可以改变大小的数组的情况。
class MyQueue {
Stack<Integer> st1;
Stack<Integer> st2;
public MyQueue() {
st1 = new Stack<>();
st2 = new Stack<>();
}
public void push(int x) {
st1.push(x);
}
public int pop() {
if (st1.empty()) return -1;
while (!st1.empty()){
int temp = st1.pop();
st2.push(Integer.valueOf(temp));
}
int res = st2.pop();
while (!st2.empty()){
int temp1 = st2.pop();
st1.push(Integer.valueOf(temp1));
}
return res;
}
public int peek() {
if (st1.empty()) return -1;
while (!st1.empty()){
int temp = st1.pop();
st2.push(Integer.valueOf(temp));
}
int res = st2.peek();
while (!st2.empty()){
int temp1 = st2.pop();
st1.push(Integer.valueOf(temp1));
}
return res;
}
public boolean empty() {
if (st1.empty()) return true;
return false;
}
}
实现过程中遇到哪些困难
1. 主要是对java栈的数据类型和数据结构不太熟悉。
看完代码随想录之后的想法
【解题思路】Java Stack的基础操作。
看完视频自己写的ACC:
class MyQueue {
Stack<Integer> st1;
Stack<Integer> st2;
public MyQueue() {
st1 = new Stack<>();
st2 = new Stack<>();
}
public void push(int x) {
st1.push(x);
}
public int pop() {
dumpstackIn();
return st2.pop();
}
public int peek() {
dumpstackIn();
return st2.peek();
}
public boolean empty() {
return st1.empty() && st2.empty();
}
public void dumpstackIn(){
if (!st2.empty()) return;
while (!st1.empty()) st2.push(st1.pop());
}
}
学习时长
略
今日收获
1. Java Stack 类
栈是Vector的一个子类,它实现了一个标准的后进先出的栈。
除了由Vector定义的所有方法,自己也定义了一些方法:
【初始化】Stack<Integer> st = new Stack<Integer>();
序号 | 方法描述 |
---|---|
1 | boolean empty()? 测试堆栈是否为空。 |
2 | Object peek( ) 查看堆栈顶部的对象,但不从堆栈中移除它。 |
3 | Object pop( ) 移除堆栈顶部的对象,并作为此函数的值返回该对象。 |
4 | Object push(Object element) 把项压入堆栈顶部。 |
5 | int search(Object element) 返回对象在堆栈中的位置,以 1 为基数。 |
2.?Java Vector 类
Vector 类实现了一个动态数组。和 ArrayList 很相似,但是两者是不同的:
- Vector 是同步访问的。
- Vector 包含了许多传统的方法,这些方法不属于集合框架。
Vector 主要用在事先不知道数组的大小,或者只是需要一个可以改变大小的数组的情况。
【初始化】Vector v1 = new Vector();
【常用方法】
add(),capacity(),clear(),contains(),get(),indexOf(),isEmpty(),remove(),size(),toArray(),toString()。
文章来源:https://blog.csdn.net/Leonardo_t/article/details/135139540
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!