Add Digits
Created: September 23, 2018 by [lek-tin]
Last updated: September 23, 2018
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?
Credits: Special thanks to @jianchao.li.fighter for adding this problem and creating all test cases.
Explanation
| Number | Result |
|---|---|
| 0 | 0 |
| 1, 10, 19, 28 … | 1 |
| 2, 11, 20, 29 … | 2 |
| 3, 12, 21, 30 … | 3 |
| 4, 13, 22, 31 … | 4 |
| 5, 14, 23, 32 … | 5 |
| 6, 15, 24, 33 … | 6 |
| 7, 16, 25, 34 … | 7 |
| 8, 17, 26, 35 … | 8 |
| 9, 18, 27, 36 … | 9 |
Solution
class Solution {
public:
int addDigits(int num) {
return num == 0 ? 0 : (num % 9 == 0 ? 9 : num % 9);
}
};