mirror of
https://github.com/youngyangyang04/leetcode-master.git
synced 2025-07-08 00:43:04 +08:00
添加 225. 用队列实现栈 Swift版本
This commit is contained in:
@ -598,5 +598,124 @@ MyStack.prototype.empty = function() {
|
||||
|
||||
```
|
||||
|
||||
Swift
|
||||
```Swift
|
||||
// 定义一个队列数据结构
|
||||
class Queue {
|
||||
var array: [Int]
|
||||
init() {
|
||||
array = [Int]()
|
||||
}
|
||||
|
||||
/** Push element x to the back of queue. */
|
||||
func push(_ x: Int) {
|
||||
array.append(x)
|
||||
}
|
||||
|
||||
/** Removes the element from in front of queue and returns that element. */
|
||||
func pop() -> Int {
|
||||
if array.isEmpty {
|
||||
return -1
|
||||
}
|
||||
return array.removeFirst()
|
||||
}
|
||||
|
||||
/** Get the front element. */
|
||||
func peek() -> Int {
|
||||
if array.isEmpty {
|
||||
return -1
|
||||
}
|
||||
return array.first!
|
||||
}
|
||||
|
||||
/** Returns whether the queue is empty. */
|
||||
func empty() -> Bool {
|
||||
return array.isEmpty
|
||||
}
|
||||
|
||||
func count() -> Int {
|
||||
return array.count
|
||||
}
|
||||
}
|
||||
|
||||
// 使用双队列
|
||||
class MyStack {
|
||||
var queue1: Queue
|
||||
var queue2: Queue
|
||||
|
||||
init() {
|
||||
queue1 = Queue()
|
||||
queue2 = Queue()
|
||||
}
|
||||
|
||||
func push(_ x: Int) {
|
||||
queue1.push(x)
|
||||
}
|
||||
|
||||
func pop() -> Int {
|
||||
if queue1.empty() {
|
||||
return -1
|
||||
}
|
||||
while queue1.count() > 1 {
|
||||
queue2.push(queue1.pop())
|
||||
}
|
||||
let res = queue1.pop()
|
||||
while !queue2.empty() {
|
||||
queue1.push(queue2.pop())
|
||||
}
|
||||
return res
|
||||
}
|
||||
|
||||
func top() -> Int {
|
||||
if queue1.empty() {
|
||||
return -1
|
||||
}
|
||||
let res = pop()
|
||||
push(res)
|
||||
return res
|
||||
}
|
||||
|
||||
func empty() -> Bool {
|
||||
return queue1.empty() && queue2.empty()
|
||||
}
|
||||
}
|
||||
|
||||
// 使用单队列
|
||||
class MyStack {
|
||||
var queue: Queue
|
||||
|
||||
init() {
|
||||
queue = Queue()
|
||||
}
|
||||
|
||||
func push(_ x: Int) {
|
||||
queue.push(x)
|
||||
}
|
||||
|
||||
func pop() -> Int {
|
||||
if queue.empty() {
|
||||
return -1
|
||||
}
|
||||
for _ in 1 ..< queue.count() {
|
||||
queue.push(queue.pop())
|
||||
}
|
||||
return queue.pop()
|
||||
}
|
||||
|
||||
func top() -> Int {
|
||||
if queue.empty() {
|
||||
return -1
|
||||
}
|
||||
let res = pop()
|
||||
push(res)
|
||||
return res
|
||||
}
|
||||
|
||||
func empty() -> Bool {
|
||||
return queue.empty()
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
-----------------------
|
||||
<div align="center"><img src=https://code-thinking.cdn.bcebos.com/pics/01二维码一.jpg width=500> </img></div>
|
||||
|
Reference in New Issue
Block a user