Skip to content

Latest commit

 

History

History

258 - Add Digits

Folders and files

NameName
Last commit message
Last commit date

parent directory

..
 
 
 
 

258. Add Digits share

Problem Statement

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?

Click to open Hints

  • 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.

Solutions

impl Solution {
    pub fn add_digits(num: i32) -> i32 {
        let mut num = num;

        // loop while the number is greater than 9
        while num > 9 {
            let mut sum = 0;
            // loop while the number is greater than 0,
            // add the last digit to the sum,
            // and divide the number by 10
            while num > 0 {
                sum += num % 10;
                num /= 10;
            }
            // set the number to the sum
            num = sum;
        }

        num
    }
}