标签:
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 = 11
, 1 + 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; } } }
标签:
原文地址:http://www.cnblogs.com/Machelsky/p/5860904.html