題目
用兩個(gè)棧來(lái)實(shí)現(xiàn)一個(gè)隊(duì)列熙兔,完成隊(duì)列的Push和Pop操作悲伶。 隊(duì)列中的元素為int類型
- 分析
隊(duì)列的特性是:“先入先出”,棧的特性是:“先入后出”
故:
- 當(dāng)插入時(shí)住涉,直接插入 stack1
- 當(dāng)彈出時(shí)麸锉,當(dāng) stack2 不為空,直接彈出 stack2 棧頂元素舆声,如果 stack2 為空花沉,將 stack1 中的全部數(shù)逐個(gè)出棧入棧 stack2,再?gòu)棾?stack2 棧頂元素
- 代碼
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() throws Exception {
//如果stack2為空媳握,則將stack1得所有數(shù)據(jù)添加進(jìn)stack2
if(stack2.isEmpty()){
while(!stack1.isEmpty()){
stack2.push(stack1.pop());
}
}
if(stack2.isEmpty()){
throw new Exception("stack is null");
}
//如果stack2不為空碱屁,則直接彈出
return stack2.pop();
}
}
參考
CS-Notes
何海濤. 劍指 Offer[M]. 電子工業(yè)出版社, 2012.