258-add-digits

Try it on leetcode

Description

Given an integer num, repeatedly add all its digits until the result has only one digit, and return it.

 

Example 1:

Input: num = 38
Output: 2
Explanation: The process is
38 --> 3 + 8 --> 11
11 --> 1 + 1 --> 2 
Since 2 has only one digit, return it.

Example 2:

Input: num = 0
Output: 0

 

Constraints:

  • 0 <= num <= 231 - 1

 

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

Solution(Python)

class Solution:
    def addDigits(self, num: int) -> int:
        return self.math(num)

    def trivialSolution(self, num: int) -> int:
        digital_root = 0
        while num > 0:
            digital_root += num % 10
            num = num // 10

            if num == 0 and digital_root > 9:
                num = digital_root
                digital_root = 0
        return digital_root

    def math(self, num: int) -> int:
        if num == 0:
            return num
        elif num % 9 == 0:
            return 9
        else:
            return num % 9