Skip to content
On this page

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
};

技术文档集合