Given a non-negative integer num
, repeatedly add all its digits until the result has only one digit.
For example:
Given num = 38
, the process is like: 3 + 8 = 11
, 1 + 1 = 2
. Since 2
has only one digit, return it.
Follow up:
Could you do it without any loop/recursion in O(1) runtime?
code:
class Solution(object):
def addDigits(self, num):
# """
# :type num: int
# :rtype: int
# """
#取位数
# while num>=10:
# sum=0
# while num !=0:
# sum+=num%10
# num/=10
# num=sum
# return num
while num>=10:
a=sum([int(x) for x in str(num)])
num=a
return num
#数学
# if num==0:
# return 0
# return num%9 if num%9!=0 else 9
# 可以遍历出前30个的数字,我们很容易找出规律
# 输入:0 1 2 3 4 5 6 7 8 9 10 11 12 13 14......
# 输出:0 1 2 3 4 5 6 7 8 9 1 2 3 4 5 6 7 8 9 1 2 3 4.....
# 我们可以发现输出的数字除了第一个,都是1-9循环,所以直接模九就可以