Add Digits
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.
Could you do it without any loop/recursion in O(1) runtime?
Special thanks to @jianchao.li.fighter for adding this problem and creating all test cases.
Follow the steps in the problem description recursively.
class Solution {
public int addDigits(int num) {
int result = num;
while (result >= 10) {
num = result;
result = 0;
while (num > 0) {
result += num % 10;
num /= 10;
}
}
return result;
}
}
class Solution {
public:
int addDigits(int num) {
int result = num;
while (result >= 10) {
num = result;
result = 0;
while (num > 0) {
result += num % 10;
num /= 10;
}
}
return result;
}
};
class Solution(object):
def addDigits(self, num):
"""
:type num: int
:rtype: int
"""
result = num
while result >= 10:
num = result
result = 0
while num > 0:
result += num % 10
num /= 10
return result
int addDigits(int num) {
int result = num;
while (result >= 10) {
num = result;
result = 0;
while (num > 0) {
result += num % 10;
num /= 10;
}
}
return result;
}
- Time Complexity: O(N), N is the round to be only one digit.
- Space Complexity: O(1)