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.
写了一下代码:
public int addDigits(int num) {
int n=0;
while(true){
while(num>0){
n+=num%10;
num=num/10;
}
if(n>9){
num=n;
n=0;
}
else
return n;
}
}
AC了,但是题目说可以在O(1)内解决。
还需另想办法来解决这个问题。
那我们就试试几个数,试着找一下规律。。。
输入:1,2,3,4,5,6,7,8,9,10 11, 12, 13, 14, 15, 16,17,18,19,20
结果:1, 2,3,4,5,6,7,8,9,1, 2, 3, 4, 5, 6,7, 8, 9, 1, 2
根据上面的尝试,我们可以发现,这里是有规律的。
即结果满足,(num-1)%9+1
public class Solution {
public int addDigits(int num) {
return (num-1)%9+1;
}
}