解题思路:
- 每次判断其是否大于10,大于10通过循环将每一位数加起来,直至该数字小于10,退出循环,输出。
- 对于题目中的进阶问题,是否可以不用循环或递归来解决问题,即时间复杂度为:
,只有可能看成是数学问题,想不出来。。。。
代码:
第一遍:981/1101,没通过案例:10
class Solution {
public:
int addDigits(int num) {
int ans;
while (num > 10) {
ans = 0;
// 这里还需要一个循环来处理
while (num > 0) {
ans += num % 10;
num /= 10;
}
num = ans;
}
return num;
}
};
原因:外循环判断条件出错,将10放在外面了,10也两位数。。。。
修改:
class Solution {
public:
int addDigits(int num) {
int ans;
while (num >= 10) {
ans = 0;
// 这里还需要一个循环来处理
while (num > 0) {
ans += num % 10;
num /= 10;
}
num = ans;
}
return num;
}
};
不理解那剩余的100多个案例是什么,笑哭。。