Skip to main content

各位相加

题目

给定一个非负整数 num, 反复将各个位上的数字相加, 直到结果为一位数. 返回这个结果.

进阶: 你可以不使用循环或者递归, 在 O(1) 时间复杂度内解决这个问题吗?

提示:
  • 0 <= num <= 2³¹ - 1
示例
输入: num = 38
输出: 2
解释: 各位相加的过程为:
38 --> 3 + 8 --> 11
11 --> 1 + 1 --> 2
由于 2 是一位数, 所以返回 2.
输入: num = 0
输出: 0

题解

/**
* @param {number} num
* @return {number}
*/
var addDigits = function (num) {
while (num >= 10) {
let sum = 0
while (num > 0) {
sum += num % 10
num = Math.floor(num / 10)
}
num = sum
}
return num
}