第一天 09. 用兩個(gè)棧實(shí)現(xiàn)隊(duì)列

題目

用兩個(gè)棧實(shí)現(xiàn)一個(gè)隊(duì)列。隊(duì)列的聲明如下,請(qǐng)實(shí)現(xiàn)它的兩個(gè)函數(shù) appendTail 和 deleteHead ,分別完成在隊(duì)列尾部插入整數(shù)和在隊(duì)列頭部刪除整數(shù)的功能。(若隊(duì)列中沒有元素,deleteHead 操作返回 -1 )
示例 1
輸入:
["CQueue","appendTail","deleteHead","deleteHead","deleteHead"]
[[],[4],[],[],[]]
輸出:[null,null,4,-1,-1]
示例2
輸入:
["CQueue","deleteHead","appendTail","appendTail","deleteHead","deleteHead"]
[[],[],[3],[8],[],[]]
輸出:[null,-1,null,null,3,8]

Swift

//用兩個(gè)棧實(shí)現(xiàn)隊(duì)列
//自定義棧結(jié)構(gòu)
class AStack {
    var list = [Int]()
    func pop()-> Int{
        if list.isEmpty == true {
            //異常處理,返回-1
            return -1
        }
        return list.removeLast()
    }
    func push(obj:Int) {
        list.append(obj)
    }
    func isEmpty() -> Bool {
        return list.isEmpty
    }
}

class CQueue {
    var inStack:AStack
    var outStack:AStack
    init() {
        inStack = AStack()
        outStack = AStack()
    }
    
    func appendTail(_ value: Int) {
        inStack.push(obj: value)
    }
    
    func deleteHead() -> Int {
        if outStack.isEmpty() == true {
             while inStack.isEmpty() == false {
                 outStack.push(obj:inStack.pop())
             }
        }
        return outStack.pop()
    }
}

var que = CQueue()
que.appendTail(1)
que.deleteHead()
que.deleteHead()
que.deleteHead()

Java

待更新

對(duì)解法有疑問或者建議,可以留言喲
官網(wǎng)入口

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容