Add Digits
Question
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?
Tags
- Mathematics
Thought
Two solutions:
- use loop
- don't use loop
The implementation of these two algorithms are provided below. For the algorithm without loop, please check the reference.
Code
loop
class Solution(object):
def addDigits(self, num):
"""
:type num: int
:rtype: int
"""
while num >= 10:
num = sum([int(n) for n in list(str(num))])
return num
without loop
class Solution(object):
def addDigits(self, num):
"""
:type num: int
:rtype: int
"""
if num == 0:
return 0
return (num - 1) % 9 + 1