为了实习与秋招,立下flag两个月刷完剑指offer!ヾ(◍°∇°◍)ノ゙因为现在个人熟练度java>c++>python,所以代码都用java来写,有的题可能会用python,仅以此系列博文作为记录,所有代码均通过测试。
================================================================
时间限制:1秒
空间限制:32768K
热度指数:200438
题目描述
用两个栈来实现一个队列,完成队列的Push和Pop操作。 队列中的元素为int类型。
思路
栈是先进后出而队列处先进先出,这个题要注意的就是每次pop的时候要把stack1中的所有元素全部弹出压入stack2,我第一次写出队的时候想的太简单的,结果就会出现下面的情况:
stack2.push(stack1.pop());
return stack2.pop();
未通过!测试用例:
["PSH1","PSH2","PSH3","POP","POP","PSH4","POP","PSH5","POP","POP"]
对应输出应该为:
1,2,3,4,5
你的输出为:
3,2,4,5,1
代码
import java.util.Stack;
public class Solution {
Stack<Integer> stack1 = new Stack<Integer>();
Stack<Integer> stack2 = new Stack<Integer>();
public void push(int node) {
stack1.push(node);
}
public int pop() {
if(stack2.empty()){
while(!stack1.empty()){
stack2.push(stack1.pop());
}
}
return stack2.pop();
}
}
运行时间:18ms
占用内存:9428k