代码随想录-刷题笔记
内容:
虽然这道题看起来很莫名其妙,但这确实很莫名其妙。。。
单纯的考察算法思想。而且还能用两个栈。
因此实现起来还是很简单
栈是后进后出,队列是先进后出
使用两个栈,按照如下方式可以完美的实现所需功能
stack1 为主要储存的栈 stack2 为过渡栈
入栈只需要直接进入stack1
出栈如下:
将stack1 全部 -> stack2
stack2 获取栈顶
将stack2 全部 -> stack1
完成一次队列的出队
代码如下:
class MyQueue {
public Stack<Integer> stack1 = new Stack<>();
public Stack<Integer> stack2 = new Stack<>();
public MyQueue() {
}
public void push(int x) {
stack1.push(x);
}
public int pop() {
int result = -1;
while(!stack1.empty()) {
stack2.push(stack1.pop());
}
if(!stack2.empty()) {
result = stack2.pop();
}
while(!stack2.empty()) {
stack1.push(stack2.pop());
}
return result;
}
public int peek() {
int result = -1;
while(!stack1.empty()) {
stack2.push(stack1.pop());
}
if(!stack2.empty()) {
result = stack2.peek();
}
while(!stack2.empty()) {
stack1.push(stack2.pop());
}
return result;
}
public boolean empty() {
return stack1.empty();
}
}
/**
* Your MyQueue object will be instantiated and called as such:
* MyQueue obj = new MyQueue();
* obj.push(x);
* int param_2 = obj.pop();
* int param_3 = obj.peek();
* boolean param_4 = obj.empty();
*/
总结:
本题很简单,也没什么太多好说的。只需要知道本体是为了了解数据结构用的即可。

2287

被折叠的 条评论
为什么被折叠?



