题目
用两个栈实现一个队列。队列的声明如下,请实现它的两个函数 appendTail 和 deleteHead ,分别完成在队列尾部插入整数和在队列头部删除整数的功能。(若队列中没有元素,deleteHead 操作返回 -1 )
代码语言:txt复制示例 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 次调用
解题思路
代码语言:txt复制class CQueue {
var inputList:[Int] = []
var outputList:[Int] = []
init() {
}
func appendTail(_ value: Int) {
inputList.append(value)
}
func deleteHead() -> Int {
// 把inputList的放到outputList然后退栈
if outputList.isEmpty == true {
while inputList.isEmpty == false {
outputList.append(inputList.popLast()!)
}
if outputList.isEmpty == false {
return outputList.popLast()!
}
else {
return -1
}
}
else {
return outputList.popLast()!
}
}
}
/**
* Your CQueue object will be instantiated and called as such:
* let obj = CQueue()
* obj.appendTail(value)
* let ret_2: Int = obj.deleteHead()
*/
let obj = CQueue()
obj.appendTail(5)
obj.appendTail(4)
let ret_2: Int = obj.deleteHead()
obj.appendTail(3)
let ret_3: Int = obj.deleteHead()