首页 > 代码库 > 258. Add Digits

258. Add Digits

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.

Solution1: 

非常strightforward,算和,看是不是single digit。

public class Solution {    public int addDigits(int num) {        while(num/10!=0)        {            num=sum(num);        }        return num;    }    public int sum(int num)    {        int res=0;        while(num!=0)        {            res+=num%10;            num/=10;        }        return res;    }    }

Solution2: 

follow up: O(1)

ref:https://en.wikipedia.org/wiki/Digital_root

有规律的。。。除9余数为0,树根为9.除9余数不为零,为余数。0的树根为0.

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

 

258. Add Digits