首先找规律;
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;
}
};