题目描述
思路
模拟
最直观的做法就是模拟数字各个位置相加的过程,直到只剩下一位数,即0-9。但是0只可能是数字0得到的结果,其他非负整数的结果都应在1-9的范围。
具体实现时,可以每次都对当前整数对10求余得到最低位数,将最低位数加到总和中,然后将当前整数除以10。重复上述操作直至当前数变为0,此时的总和即为原数的各位想加的结果。对这个总和再继续执行上述过程,直到总和为个位数。
Python实现
class Solution:
def addDigits(self, num: int) -> int:
while num >= 10:
sum = 0
while num:
sum += num % 10
num //= 10
num = sum
return num
Java实现
class Solution {
public int addDigits(int num) {
while (num >= 10) {
int sum = 0;
while (num > 0) {
sum += num % 10;
num /= 10;
}
num = sum;
}
return num;
}
}