但可惜我怎麼看,門都沒有一絲縫隙。
「學姊,還是老實解題吧。」學妹很快就放棄了等待,回去解題。
我又等了一會兒,等到最後晃動也停止了,才垂頭喪氣的回到學妹身邊。
學妹做的是合併兩棵樹的題目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的風格。」我聳聳肩。「而且速度和其他人相比也慢上一大截。」