題目:
Given an integer num, repeatedly add all its digits until the result has only one digit, and return it.
給定一數,將其每一位數字相加,得出結果後重複,直到結果是個位數回傳
ex:input:38=>output:2
explanation:
38 --> 3 + 8 --> 11
11 --> 1 + 1 --> 2
這題我用最直觀的方法去做
class Solution:
def addDigits(self, num: int) -> int:
while num>=10:
ans=0
while num!=0:
ans=ans+num%10
num=num//10
num=ans
return num
我真的將每一位數相加,不斷重複,直到< 10
但這樣解時間也不算太慢
最後執行時間30ms(faster than 96.83%)
而在看過討論區後,才發現是有規則可循的
有人證出該數除9的餘數即為此題的解答
而整除的話答案就是9(除非是0)
class Solution:
def addDigits(self, num: int) -> int:
ans=num%9
if ans==0 and num!=0:
return 9
return ans
所以我們只要算出該數除9的餘數
再對一些特例做處理答案就到手了
最後執行時間24ms(faster than 99.78%)
那我們下題見