258. Add Digits

Q: Given a non-negative integer  num , repeatedly add all its digits until the result has only one digit.

For example:

Given num = 38, the process is like: 3 + 8 = 111 + 1 = 2. Since 2 has only one digit, return it.

问题:给定一个非负整数,重复将其所有位上的数字相加,直至结果为一位数,返回该数。


思路一:使用递归和循环将数的每位相加,直至结果为个位数。

AC解(22.46%):

    public int addDigits(int num) {
        if(num<10) return num;
        else{
            int x=0;
            while(num!=0){
                x+=num%10;
                num/=10;
            }
            return addDigits(x);
        }
    }


思路二:将所有位上的数相加,其结果就相当于该数对9取模(除0外)。(22.46%)


    public int addDigits(int num) {
        if(num==0) return 0;
        else return num%9==0?9:num%9;
    }




你可能感兴趣的:(LeetCode)