题目:
Add Digits:
Given a non-negative integer num
, repeatedly add all its digits until the result has only one digit.
样例
Given num
= 38.
The process is like: 3 + 8 = 11
, 1 + 1
= 2
. Since 2
has only one digit, return 2
.
public static int addDigits(int num)
{
// Write your code here
//num 0 !0
//num <10 >10
/*
* 外循环 处理数据的依据就是求模运算大于零,且这个数大于十 不大于十直接返回
* 内循环 求余累加sum num从个位开始依次到N位,直至num=0不再进入
*/
if (num<10)
{
return num;
}
else
{
while (num % 10 > 0&&num>10)
{
var sum = 0;
while (num > 0)
{
sum += num % 10;
num /= 10;
}
num = sum;
}
return num;
}
}
public static int addDigitsforRole(int num) {
/*
1 1
2 2
3 3
4 4
5 5
6 6
7 7
8 8
9 9
10 1
11 2
12 3
13 4
14 5
15 6
16 7
17 8
18 9
19 1
20 2
* 9个数一个轮回,我们就直接模9
* 那么特殊情况(9 及9的倍数)我们采用减一加一获取
* 减一加一也兼顾了其它数的求根
*/
return (num-1)%9+1;
}