Add Digits

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.
  • Analysis:
Follow the steps in the problem description recursively.
  • Code - Java:
class Solution {
    public int addDigits(int num) {
        int result = num;
        while (result >= 10) {
            num = result;
            result = 0;
            while (num > 0) {
                result += num % 10;
                num /= 10;
            }
        }
        return result;
    }
}
  • Code - C++:
class Solution {
public:
    int addDigits(int num) {
        int result = num;
        while (result >= 10) {
            num = result;
            result = 0;
            while (num > 0) {
                result += num % 10;
                num /= 10;
            }
        }
        return result;
    }
};
  • Code - Python:
class Solution(object):
    def addDigits(self, num):
        """
        :type num: int
        :rtype: int
        """
        result = num
        while result >= 10:
            num = result
            result = 0
            while num > 0:
                result += num % 10
                num /= 10
        return result
  • Code - C:
int addDigits(int num) {
    int result = num;
    while (result >= 10) {
        num = result;
        result = 0;
        while (num > 0) {
            result += num % 10;
            num /= 10;
        }
    }
    return result;
}
  • Time Complexity: O(N), N is the round to be only one digit.
  • Space Complexity: O(1)

results matching ""

    No results matching ""