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?
解题:
找规律:
0~9: num
1+9 = 10 -> 1
2+9 = 11 ->2
3+9 = 12 ->3
4+9 = 13-> 4
...
9+9 = 19 -> 9
所以: 任何数%9 的余数就是答案:
下面是我的实现:
class Solution {
public:
int addDigits(int num) {
if (num == 0)
{
return num;
}
else
{
int data = num%9;
if (data == 0)
{
return 9;
}
else
{
return data;
}
}
}
};