方法一:
這道題讓我們求樹根,所謂樹根,就是將大於10的數的各個位上的數字相加,若結果還大於10的話,則繼續相加,直到數字小於10爲止。那麼根據這個性質,我們可以寫出一個解法如下:
class Solution {
public:
int addDigits(int num) {
while (num / 10 > 0) {
int sum = 0;
while (num > 0) {
sum += num % 10;
num /= 10;
}
num = sum;
}
return 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的數對9取餘就是0了,爲了得到其本身,而且同樣也要對大於9的數適用,我們就用(n-1)%9+1這個表達式來包括所有的情況,所以解法如下:
class Solution {
public:
int addDigits(int num) {
return (num - 1) % 9 + 1;
}
};