原題
給出一個非負整數(shù)椭员,重復(fù)計算為一位的和,直到這個和變?yōu)橐晃粩?shù)
樣例:
給出 num = 38,過程即:
3 + 8 = 11
1 + 1 = 2
因為2只有一位撩幽,所以返回2
解題思路
- 方法一:安裝題目要求進行計算即可
- 方法二:同樣是寫出一些相應(yīng)的結(jié)果,找規(guī)律
1 1
2 2
3 3
4 4
5 5
6 6
7 7
8 8
9 9
10 1
11 2
12 3
13 4
14 5
15 6
16 7
17 8
18 9
19 1
20 2
我們可以得出規(guī)律箩艺,每9個一次循環(huán)窜醉,但需要注意:9, 18...對9取余就是0了艺谆,為了得到其本身榨惰,我們就用(n-1)%9+1這個表達式來包括所有的情況
完整代碼
# method 1
class Solution(object):
def addDigits(self, num):
"""
:type num: int
:rtype: int
"""
res = self.helper(num)
while res > 9:
res = self.helper(res)
return res
def helper(self, num):
sum = 0
while num != 0:
sum += num % 10
num = num / 10
return sum
# method 2
class Solution(object):
def addDigits(self, num):
"""
:type num: int
:rtype: int
"""
if num == 0:
return num
return (num - 1) % 9 + 1