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?
Hint:
- A naive implementation of the above process is trivial. Could you come up with other methods?
- What are all the possible results?
- How do they occur, periodically or randomly?
- You may find this Wikipedia article useful.
class Solution {
public:
int addDigits(int num) {
if(num<10)
return num;
int sum =0;
int value1= num/10;
int value2=num-value1*10;
sum+=value1;
while(value2>10)
{
value1=value2/10;
value2=num-value1*10;
sum+=value1;
}
sum+=value2;
if(sum>=10)
{
sum=addDigits(sum);
}
return sum;
}
};