【剑指offer】面试题09:用两个栈实现队列(Java)
用兩個棧實現(xiàn)一個隊列。隊列的聲明如下,請實現(xiàn)它的兩個函數(shù) appendTail 和 deleteHead ,分別完成在隊列尾部插入整數(shù)和在隊列頭部刪除整數(shù)的功能。(若隊列中沒有元素,deleteHead?操作返回 -1 )
?
示例 1:
輸入:
["CQueue","appendTail","deleteHead","deleteHead"]
[[],[3],[],[]]
輸出:[null,null,3,-1]
示例 2:
輸入:
["CQueue","deleteHead","appendTail","appendTail","deleteHead","deleteHead"]
[[],[],[5],[2],[],[]]
輸出:[null,-1,null,null,5,2]
提示:
1 <= values <= 10000
最多會對?appendTail、deleteHead 進行?10000?次調(diào)用
代碼:
class?CQueue?{
????Stack<Integer>?stack1;
????Stack<Integer>?stack2;
????public?CQueue()?{
????????stack1?=?new?Stack<Integer>();//添加棧
????????stack2?=?new?Stack<Integer>();
????}
????
????public?void?appendTail(int?value)?{
????????while(!stack2.isEmpty())
????????{
????????????stack1.push(stack2.pop());
????????}
????????stack1.push(value);
????}
????
????public?int?deleteHead()?{
????????while(!stack1.isEmpty())
????????{
????????????stack2.push(stack1.pop());
????????}
????????if(stack2.isEmpty())
????????{
????????????return?-1;
????????}
????????return?stack2.pop();
????}
}
?
/**
?*?Your?CQueue?object?will?be?instantiated?and?called?as?such:
?*?CQueue?obj?=?new?CQueue();
?*?obj.appendTail(value);
?*?int?param_2?=?obj.deleteHead();
?*/
總結
以上是生活随笔為你收集整理的【剑指offer】面试题09:用两个栈实现队列(Java)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Leetcode--264. 丑数Ⅱ
- 下一篇: java美元兑换,(Java实现) 美元