Kotlin Leetcode - 232. Implement Queue using Stacks
class MyQueue() {
fun push(x: Int) {
}
fun pop() {
}
fun peek() {
}
fun empty() {
}
}
解題思路
這題考的是對 Stack 和 Queue 的理解
由於 Queue 是先進後出的,我們要想辦法讓進入的元素擺到最後面
可以用兩個 Stack 來模擬 Queue 的行為
在 push
的時候,我們可以將 stack1 的內容先全部倒入 stack2 內
這樣會讓內容順序反轉過來
這時我們將 push
的元素放到 stack1 內
再將 stack2 的元素倒回 stack1
這樣一來
我們就可以將 push
的元素放到 stack1 的最後面了
其餘的操作就跟 Stack 一樣了
我們可以用原本 stack1 提供的 pop()
peek()
isEmpty()
來實作 queue 的對應函數
Kotlin 參考解答
class MyQueue() {
private val stack1 = Stack<Int>()
private val stack2 = Stack<Int>()
fun push(x: Int) {
while (!stack1.isEmpty()) stack2.push(stack1.pop())
stack1.push(x)
while (!stack2.empty()) stack1.push(stack2.pop())
}
fun pop() = stack1.pop()
fun peek() = stack1.peek()
fun empty() = stack1.isEmpty()
}
- 回到 leetcode 列表
- 回到 Grind 75 列表