简单算法 用两个栈实现队列(java)
描述
用两个栈来实现一个队列,分别完成在队列尾部插入整数(push)和在队列头部删除整数(pop)的功能。 队列中的元素为int类型。保证操作合法,即保证pop操作时队列内已有元素。
示例:
输入:
[“PSH1”,“PSH2”,“POP”,“POP”]
返回:
1,2
解析:
“PSH1”:代表将1插入队列尾部
“PSH2”:代表将2插入队列尾部
"POP“:代表删除一个元素,先进先出=>返回1
"POP“:代表删除一个元素,先进先出=>返回2
想法:
读了这个题后,我的想法是既然有两个栈,其中一个做储存作用,因为是队列先进先出,另一个栈作用是在入队时将储存栈的所有元素取出放入这个栈中暂时宝春,以达到最后一个进,最后一个出的效果。
代码:
import java.util.Stack;
public class Solution {
Stack<Integer> stack1 = new Stack<Integer>();
Stack<Integer> stack2 = new Stack<Integer>();
public void push(int node) {
if(stack1.size() == 0){
stack1.push(node);
}else{
while(stack1.size() != 0){
stack2.push(stack1.pop());
}
stack1.push(node);
while(stack2.size() != 0){
stack1.push(stack2.pop());
}
}
}
public int pop() {
return stack1.pop();
}
}