[LeetCode] #258 各位相加

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

输入: 38

输出: 2

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

有的类似于[LeetCode] #202 快乐数

class Solution {
    public int addDigits(int num) {
        if(num < 10) return num;
        int sum = 0;
        while (num != 0) {
            int d = num % 10;
            num = num / 10;
            sum += d;
        }
        return addDigits(sum);
    }
}
数学解法
X = 100*a + 10*b + c = 99*a + 9*b + (a+b+c)
class Solution {
    public int addDigits(int num) {
        return (num - 1) % 9 + 1;
    }
}

知识点:

总结:

posted @ 2021-09-15 13:26  1243741754  阅读(42)  评论(0编辑  收藏  举报