「上次的遞迴,說起來還有點難度吧?」
「對呀⋯⋯回去我又重複看了兩題的作法好幾次,還是需要一點時間理解」曉欣無力的說。
「夏天姐,說起來,之前我有聽其他工程師說過,遞迴的效率其實不好,那是不是我們就不用太認真學遞迴的寫法了?」
「『遞迴的效率其實不好』這個觀念不太對喔。
因為背後的實作方式,確實在撰寫遞迴時,要注意的地方會比較多,比方說遞迴的深度會需要控制。但是並不能說這個寫法就不好,我們要完全地避免使用這個撰寫方式。
程式的效能不好,應該是要去針對效能不好的原因,去進行改進以及調整。而不是說就完全地避免某種寫法。」
「今天先休息一下吧,我們來寫一些簡單的題目」夏天打開 1929. Concatenation of Array
「這題我會!《Kotlin Collection全方位解析攻略 : 精通原理及實戰,寫出流暢好維護的程式》 有提到這件事!」曉欣搶著寫
class Solution {
fun getConcatenation(nums: IntArray) =
nums + nums
}
「Kotlin 真的是一個好方便的語言」雖然已經說過很多次,菁菁還是不禁感嘆道。
夏天又打開了一題 1480. Running Sum of 1d Array
這題稍微複雜了一點點,兩人討論了一下,寫出答案
class Solution {
fun runningSum(nums: IntArray): IntArray {
val result = IntArray(nums.size)
result[0] = nums[0]
for (i in 1 until nums.size) {
result[i] = nums[i] + result[i - 1]
}
return result
}
}
看到兩人答題這麼順利,夏天又開啟了一題 1672. Richest Customer Wealth
「這題就讓我來吧」菁菁邊說邊寫出
class Solution {
fun maximumWealth(accounts: Array<IntArray>) =
accounts.map { it.sum() }.max()
}
「這邊的 map
是怎麼回事呀」曉欣不理解的問
「很簡單的,我寫給你看」菁菁用曉欣準備好的紙筆,開始試著畫圖解釋 map
的概念。
「今天真是一個好日子」夏天邊喝著冰美式邊看著熱烈討論的兩人,不禁感嘆。