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?
Hint:
- A naive implementation of the above process is trivial. Could you come up with other methods?
- What are all the possible results?
- How do they occur, periodically or randomly?
- You may find this Wikipedia article useful.
At each loop, add all the digits together and check if it has only one digit, if so, return the number.
Code(C++) :
class Solution { public: int addDigits(int num) { int n = num; while(n > 9){ int sum = 0; while(n){ sum += (n%10); n /= 10; } n = sum; } return n; } };
No comments :
Post a Comment