思路:
最原始的方法。
java code:
public class Solution {
public int addDigits(int num) {
while(num / 10 != 0) {
int sum = 0;
while(num != 0) {
sum += num % 10;
num = num / 10;
}
num = sum;
}
return num;
}
}
Follow up,不用循环,O(1)的runtime。
数字 1 ~ 9
会返回 1 ~ 9
;
数字 10 ~ 18
会返回 1 ~ 9
;
数字 19 ~ 27
会返回 1 ~ 9
;
…
从上面的规律可以看出,每隔9个数,都会循环一次,因此我们算法中就不需要循环,因为规律本身就在帮我们循环,我们只需按照判断是哪种情况返回哪种值就可以了。
java code:
public class Solution {
public int addDigits(int num) {
if(num == 0) return 0;
if(num % 9 == 0) return 9;
return num % 9;
}
}