題目描述
用兩個(gè)棧來(lái)實(shí)現(xiàn)一個(gè)隊(duì)列,完成隊(duì)列的Push和Pop操作。 隊(duì)列中的元素為int類型。
解題思路
隊(duì)列的特性是先進(jìn)先出,棧的特性是先進(jìn)后出。
public class Solution {
Stack<Integer> stack1 = new Stack<Integer>(); //主棧
Stack<Integer> stack2 = new Stack<Integer>(); //輔助棧
public void push(int node) {
//入隊(duì)操作統(tǒng)一插入到主棧
stack1.push(node);
}
public int pop() {
//出棧,先判斷輔助棧有沒(méi)有元素
if(!stack2.empty()){
//有,則直接彈出
return stack2.pop();
}else{
//沒(méi)有,則把主棧全部彈出,插入輔助棧
while (!stack1.empty()){
stack2.push(stack1.pop());
}
//彈出輔助棧棧頂
return stack2.pop();
}
}
}