列表

详情


258. 各位相加

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

 

示例 1:

输入: num = 38
输出: 2 
解释: 各位相加的过程为38 --> 3 + 8 --> 11
11 --> 1 + 1 --> 2
由于 2 是一位数,所以返回 2。

示例 1:

输入: num = 0
输出: 0

 

提示:

 

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

相似题目

快乐数

最小元素各数位之和

原站题解

去查看

上次编辑到这里,代码来自缓存 点击恢复默认模板
class Solution { public: int addDigits(int num) { } };

javascript 解法, 执行用时: 80 ms, 内存消耗: 42.1 MB, 提交时间: 2023-10-28 11:08:11

/**
 * @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;
};

cpp 解法, 执行用时: 0 ms, 内存消耗: 6.2 MB, 提交时间: 2023-10-28 11:07:50

class Solution {
public:
    int addDigits1(int num) {
        while (num >= 10) {
            int sum = 0;
            while (num > 0) {
                sum += num % 10;
                num /= 10;
            }
            num = sum;
        }
        return num;
    }
    
    int addDigits(int num) {
        return (num -1) % 9 + 1;
    }
};

golang 解法, 执行用时: 0 ms, 内存消耗: 2 MB, 提交时间: 2023-10-28 11:07:36

func addDigits1(num int) int {
    for num >= 10 {
        sum := 0
        for ; num > 0; num /= 10 {
            sum += num % 10
        }
        num = sum
    }
    return num
}

func addDigits(num int) int {
    return (num - 1) % 9 + 1
}

java 解法, 执行用时: 0 ms, 内存消耗: 38.3 MB, 提交时间: 2023-10-28 11:06:03

class Solution {
    // 模拟
    public int addDigits1(int num) {
        while (num >= 10) {
            int sum = 0;
            while (num > 0) {
                sum += num % 10;
                num /= 10;
            }
            num = sum;
        }
        return num;
    }
    // 数学规律
    public int addDigits(int num) {
        return (num - 1) % 9 + 1;
    }
}

python3 解法, 执行用时: 44 ms, 内存消耗: 13.5 MB, 提交时间: 2020-11-02 15:45:18

class Solution:
    def addDigits(self, num: int) -> int:
        res = sum([int(i) for i in str(num)])
        while res > 9:
            res = sum([int(i) for i in str(res)])
        return res
        

上一题