題目
用兩個(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)入口