Recca Chao 的 gitHub page

推廣網站開發,包含 Laravel 和 Kotlin 後端撰寫、自動化測試、讀書心得等。Taiwan Kotlin User Group 管理員。

View on GitHub

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()

}