iT邦幫忙

2022 iThome 鐵人賽

DAY 25
0

但可惜我怎麼看,門都沒有一絲縫隙。

「學姊,還是老實解題吧。」學妹很快就放棄了等待,回去解題。

我又等了一會兒,等到最後晃動也停止了,才垂頭喪氣的回到學妹身邊。

學妹做的是合併兩棵樹的題目617. Merge Two Binary Trees

這題非常簡單,尤其用lambda寫起來更是漂亮。

class Solution {
    fun mergeTrees(root1: TreeNode?, root2: TreeNode?): TreeNode? {
        return root1?.apply {
            root2?.let {
                `val` += it.`val`
                left = mergeTrees(left, it.left)
                right = mergeTrees(right, it.right)
            }
        } ?: root2
    }
}

「如果題目都這麼簡單就好了。」學妹伸伸懶腰。

「如果不限制使用的函式範圍,就算是題目Medium也會變得非常簡單。」我舉出現成的題目658. Find K Closest Elements,目標是要最接近的數字群。

直接用現有的排序函式,答案一下就出來了。

class Solution {
    fun findClosestElements(arr: IntArray, k: Int, x: Int): List<Int> {
        return arr.sortedWith( 
            compareBy({ Math.abs(it - x)}, {it})
        ).take(k).sorted()
    }
}

「數字陣列一開始就排序過的優勢完全沒用上耶。」學妹很快就發現重點。

「沒錯,所以這個解法沒有medium的風格。」我聳聳肩。「而且速度和其他人相比也慢上一大截。」


上一篇
Day24: 排隊和蝸牛爬井的相似之處
下一篇
Day26: Bug並不可怕,可怕的是⋯⋯
系列文
不解題就不能離開的房間31
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言