Recca Chao 的 gitHub page

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

View on GitHub

Kotlin Leetcode - 258. Add Digits

題目連接

class Solution {
    fun addDigits(num: Int): Int {
    }
}

解題思路

這一題我們可以從以前學的數學發現,一個數字和他每位數相加之後的結果,相減之後一定是 9 的倍數:

159 - (1 + 5 + 9) 
= (1*100 + 5*10 + 9) - (1 + 5 + 9)
= (1*99 + 5*9)

所以,這兩個數除以 9 的餘數會一樣。

也就是說,大多數時候,不斷將每位數相加,直到最後得到一個數字的答案

就是輸入的內容除以 9 的餘數。

除了一種特例:

如果輸入的內容不是 0,而且剛好是 9 的倍數,

那麼答案是 9,而不是這個數除以 9 的餘數 0。

範例:

輸入 918,9 + 1 + 8 = 18,1 + 8 = 9 所以答案是 9

以口語說明的解法如下:

  1. 如果輸入是 0,回傳 0
  2. 如果輸入是 9 的倍數,回傳 9
  3. 回傳輸入除以 9 的餘數

Kotlin 參考解答

點擊展開解答
fun addDigits(num: Int): Int {
    if (num == 0) {
        return 0
    }
    if (num % 9 == 0) {
        return 9
    }
    return num % 9
}

利用 when 語法可以更加簡化這段程式

fun addDigits(num: Int) = when {
    num == 0 -> 0
    num % 9 == 0 -> 9
    else -> num % 9
}

回到 leetcode 列表