Leetcode 258 各位相加

Posted So istes immer

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Leetcode 258 各位相加相关的知识,希望对你有一定的参考价值。

目录

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

示例:

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

寻常方法(循环)

class Solution {
    public int addDigits(int num) {
        int res;
        while(true) {
            res = 0;
            while(num > 0){
                int tmp = num % 10;
                res += tmp;
                num /= 10;
            }
            num = res;
            if (num < 10) break;
        }
        return num;
    }
}

特别方法

class Solution {
    public int addDigits(int num) {
        return (num-1) % 9 + 1;
    }
}

思路

num = x*100+y*10+z = x*99+y*9+x+y+z

1.若num%9=0,则x+y+z%9=0, 也就是num的各位数加起来能被9整除

2.若num%9不等于0,则num%9=x+y+z%9

if(num > 0 && num % 9 == 0) return 9;
return num % 9;

缩成一句话就是

return (num-1) % 9 + 1;

以上是关于Leetcode 258 各位相加的主要内容,如果未能解决你的问题,请参考以下文章

LeetCode--258--各位相加*

Leetcode 258 各位相加

leetcode 258. 各位相加

leetcode 258. 各位相加 (python)

LeetCode258-各位相加(猜想公式)

LeetCode 6. Z 字形变换 / 564. 寻找最近的回文数 / 258. 各位相加