您的位置:首页 > 其它

LeetCode oj 258. Add Digits(数字根)

2016-09-29 01:50 483 查看


258. Add Digits

 

Question
Editorial Solution
 My Submissions

Total Accepted: 127957
Total Submissions: 257201
Difficulty: Easy

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.
Follow up:

Could you do it without any loop/recursion in O(1) runtime?

给你一个数,将这个数的各个位相加,直到这个数只有一位

经典的数字根问题,之前做过,就是看能不能除开9,下面给出具体证明

设一个数是abcde,则abcde = a * 10000 + b * 1000 + c * 100 + d * 10 + e,将这个式子拆一下得到(a + b + c + d + e) + (a * 9999 + b * 999 + c * 99 + d * 9),

显然右侧括号的式子可以整除9,所以num % 9的式子成立

需要注意的是特判0 和 9

public int addDigits(int num) {
if(num % 9 == 0){
if(num == 0)
return 0;
else
return 9;
}
while(num >= 9){
num %= 9;
}
return num;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  258. Add Digits