实现栈跟队列

88 阅读1分钟
  1. 使用两个队列实现栈

其实只需要满足队列的性质即可,即先进后出。题目链接: 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

  }

}

  1. 使用两个栈实现队列

即满足栈的性质:先进先出。题目链接:剑指 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

  }

}