題目:
用兩個棧來實作一個隊列,完成隊列的Push和Pop操作。 隊列中的元素為int類型。
Java實作:
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);
}
//要判斷棧2中是否還有元素,有的話從棧2中pop,沒有的話,将棧1中元素全部放進棧2,然後pop棧2
public int pop() {
if(!stack2.empty())
{
return stack2.pop();
}
while(!stack1.empty())
{
stack2.push(stack1.pop());
}
return stack2.pop();
}
}
題目:兩個隊列實作一個棧
思路:
進隊:先判斷如果隊1為空,offer進隊1,else if隊2為空,offer進隊2(兩隊都為空的時候預設進入隊1)
出隊:如果兩個隊都為空,抛出異常或者傳回false,如果隊1為空,将隊2中的元素出隊并進隊1,直到隊2中剩下一個元素,傳回該元素;如果隊2為空,将隊1中的元素出隊并進隊2,直到隊1中剩下一個元素,傳回該元素.