首先找規律;
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
0 1 2 3 4 5 6 7 8 9 1 2 3 4 5 6 7 8
規律是1~9的9進制循環,直接%9算的話:
1~9分別對應:
1 2 3 4 5 6 7 8 0
而不是我們想要的:
1 2 3 4 5 6 7 8 9
原因在與9可以整除9了,如果提前-1,再補上+1,那麼對前8個數字不會有影響,但是9規避掉了整除,變成了8+1=9
class Solution {
public:
int addDigits(int num) {
return (num == 0) ? 0 : (num-1)%9+1;
}
};