思路:
最原始的方法。
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;
}
}
本文深入探讨了Java中数字加和问题的优化方法,从循环实现过渡到O(1)时间复杂度的解决方案,揭示了规律背后的数学原理,并提供了简洁高效的代码实现。
436

被折叠的 条评论
为什么被折叠?



