Appearance
258. 各位相加
原题链接:LeetCode 258. 各位相加
题目描述
给定一个非负整数 num,反复将各个位上的数字相加,直到结果为一位数。返回这个结果。
示例 1:
38
示例 2:
输入: num =** **0 输出: 0
提示:
0 <= num <= 231 - 1
**进阶:**你可以不使用循环或者递归,在 O(1) 时间复杂度内解决这个问题吗?
难度: Easy
题解代码
javascript
/**
* @param {number} num
* @return {number}
*/
var addDigits = function(num) {
// FIXME:使用了递归, 时间复杂度高。
// let newNum = num.toString().split('').reduce((prev, cur) => prev + Number(cur), 0)
// if (newNum > 9) {
// return addDigits(newNum)
// }
// return newNum
// 1
// 10
// 19
// 28
// 37
// 46
// 55
// 64
// 73
// 82
// 91
// 100
// 规律就再这里, 取余
if (num % 9 === 0 && num !== 0) {
return 9
}
return num % 9
};