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
2has
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;
}
相关文章推荐
- LeetCode OJ:Add Digits(数字相加)
- LeetCode OJ 之 Add Digits (数字相加)
- LeetCode OJ-258. Add Digits
- [LeetCode]258. Add Digits(把数各个位上的数字相加)
- LeetCode -- 258. Add Digits
- LeetCode OJ 之 Number of Digit One (数字1的个数)
- 258. Add Digits
- LeetCode 258 Add Digits 数字相加,数字根
- <LeetCode>258. Add Digits
- leetcode解题报告258. Add Digits
- 258. Add Digits
- Leetcode 258. Add Digits
- LeetCode OJ 之 String to Integer (atoi字符串转数字)
- 258. Add Digits
- 258. Add Digits
- leetcode 每日一题 258. Add Digits
- [java] Add Digits 数字相加
- LeetCode OJ 之 Number of Digit One (数字1的个数)
- LeetCode - 258. Add Digits
- 258. Add Digits