class Solution:
def addDigits(self, num):
num = str(num)
while(len(num)>1):
tmp = 0
for a in num:
tmp += int(a)
tmp = str(tmp)
num = tmp
return int(num)
class Solution:
def addDigits(self, num):
while num >= 10:
num = num // 10 + num % 10
return num
O(1) 数学推理:设某个数字的字符串表示为'abc',则这个数字代表a100 + b10 + c,转换后成为a + b + c,可见每次转换相当于把原数字减去a99 + b9。 只要高于个位的位置上有数字,算法就会减去一个小于原数字的9的倍数,这就相当于数字 % 9。而9本身就没有十位,因此需要考虑原数字是 0 或 9 的倍数的特殊情况
class Solution:
def addDigits(self, num):
if num > 9:
num = num % 9
if num == 0:
return 9
return num