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
以口語說明的解法如下:
- 如果輸入是 0,回傳 0
- 如果輸入是 9 的倍數,回傳 9
- 回傳輸入除以 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 列表