给定一个非负整数 num
,反复将各个位上的数字相加,直到结果为一位数。返回这个结果
一开始的想法就是不断通过取模取余最后将小于9的数返回回去
public int addDigits(int num) {
while(num / 10 != 0){
num = num % 10 + num / 10;
}
return num;
}
后通过看题解了解到数学方法,初始值num1为abc = a*100+b*10+c*1,一次位相减后后num2 = a+b+c,即num1 - num2=a*99+b*9;则每次一次位运算都可以被9整除,则若要得到多次位运算后得到的一位数,则不断整除9,返回最后的一位数即可
public int addDigits(int num) {
if(num > 9){
while(num > 9){
num %= 9;
}
if(num == 0){
return 9;
}
}
return num;
}