-
使用两个队列实现栈
其实只需要满足队列的性质即可,即先进后出。题目链接: 225. Implement Stack using Queues
class MyStack {
var inArr: [Int] = []
var outArr: [Int] = []
init() {
}
func push(_ x: Int) {
inArr.append(x)
}
func pop() -> Int {
outArr.append(contentsOf: inArr)
inArr = []
return outArr.popLast() ?? -1
}
func top() -> Int {
return inArr.last ?? outArr.last ?? -1
}
func empty() -> Bool {
return outArr.isEmpty && inArr.isEmpty
}
}
-
使用两个栈实现队列
即满足栈的性质:先进先出。题目链接:剑指 Offer 09
class CQueue {
var inStack: [Int] = []
var outStack: [Int] = []
init() {
}
func appendTail(_ value: Int) {
inStack.append(value)
}
func deleteHead() -> Int {
if outStack.isEmpty {
outStack = inStack.reversed()
inStack = []
}
return outStack.popLast() ?? -1
}
}