https://leetcode.com/problems/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.
Follow up:
Could you do it without any loop/recursion in O(1) runtime?
这个结果是有规律的,数字0除外,从1开始,计算的结果是从1到9循环的,所以我们可以将num对9取模,注意将取模式为0的对应到9可以了,最后需要直接判断num为0的特殊case,直接返回0.
int addDigits(int num) {
if(num == 0)
return 0;
int t = num % 9;
if(t == 0)
return 9;
return t;
}