给定一个非负整数 num,反复将各个位上的数字相加,直到结果为一位数。
分析:ab=a*10+b
ab%9=(a*10+b)%9=(9a+a+b)%9=(a+b)%9
abc=a*100+b*10+c
同理abc%9=(a+b+c)%9
观察题目规律,可以看出0…9结果为0…9
10…19结果为1…9…1
….
可以看出除了0以外,所有的结果都是1…9,可以num%9,比如38%9=2;但是18%9=0,18=1+8=9;我们可以做个简单的变换(num-1)%9+1;代码如下
Java:class Solution {
public int addDigits(int num) {
if(num==0)
return 0;
else
return((num-1)%9+1);
}
}