258. Add Digits - Detailed Explanation
Problem Statement
Given a non‑negative integer num, repeatedly add all its digits until the result has only one digit, and return that digit
Examples
- Input: 38
 Output: 2
 Explanation: 3 + 8 = 11 → 1 + 1 = 2
- Input: 0
 Output: 0
 Explanation: No summation needed, already one digit
- Input: 12345
 Output: 6
 Explanation: 1+2+3+4+5 = 15 → 1+5 = 6
Constraints
- 0 ≤ num ≤ 2³¹ − 1
- Must run in O(1) extra space for the optimal solution
Hints
- Think about what happens when you sum digits repeatedly: can you jump straight to the final result without the loop?
- Try writing a helper to sum digits once. How many times would you need to call it for the worst case?
Brute Force Approach
Explanation
Keep summing the digits of num until it becomes a single digit. You can convert the number to a string or extract digits by mod/divide operations.
Step‑by‑step Walkthrough
- If num < 10, return num
- Else:
- Extract each digit (e.g. num % 10, thennum /= 10)
- Sum them into sum
- Replace numwithsumand repeat
 
- Extract each digit (e.g. 
Visual Example
num = 38
sum digits: 3 + 8 = 11
num = 11
sum digits: 1 + 1 = 2
num = 2 → single digit → return 2
Python Code
Python3
Python3
. . . .
Java Code
Java
Java
. . . .
Complexity Analysis
- Time O(log n × d) where d is number of digits (since each summation is O(d) and you repeat ~log₁₀(n) times)
- Space O(1) extra
Optimal Approach (Digital Root)
Explanation
There is a mathematical shortcut: the result is 1 + (num - 1) % 9 for num > 0, and 0 when num == 0. This follows from properties of congruence modulo 9.
Step‑by‑step Walkthrough
- If num == 0, return 0
- Else compute result = 1 + (num - 1) % 9
Visual Example
num = 38
(38 - 1) % 9 + 1 = 37 % 9 + 1 = 1 + 1 = 2
Python Code
Python3
Python3
. . . .
Java Code
Java
Java
. . . .
Complexity Analysis
- Time O(1)
- Space O(1)
Common Mistakes
- Forgetting to handle num == 0(should return 0)
- Using recursive digit‑sum without stopping condition, leading to stack overflow on very large inputs
- Misapplying the modulo formula for numbers exactly divisible by 9
Edge Cases
- num = 0→ 0
- numalready a single digit (1–9) → itself
- Very large numnear 2³¹ − 1
Alternative Variations
- Sum of squares of digits repeatedly (Happy Number problem)
- Multiply digits until single digit
- Repeated digit sum for a string of digits with a repeat factor
Related Problems
TAGS
leetcode
CONTRIBUTOR
Design Gurus Team
-
GET YOUR FREE
Coding Questions Catalog
Boost your coding skills with our essential coding questions catalog.
Take a step towards a better tech career now!
Explore Answers
353. Design Snake Game - Detailed Explanation
Learn to solve Leetcode 353. Design Snake Game with multiple approaches.
2658. Maximum Number of Fish in a Grid - Detailed Explanation
Learn to solve Leetcode 2658. Maximum Number of Fish in a Grid with multiple approaches.
8. String to Integer (atoi) - Detailed Explanation
Learn to solve Leetcode 8. String to Integer (atoi) with multiple approaches.
127. Word Ladder - Detailed Explanation
Learn to solve Leetcode 127. Word Ladder with multiple approaches.
2379. Minimum Recolors to Get K Consecutive Black Blocks - Detailed Explanation
Learn to solve Leetcode 2379. Minimum Recolors to Get K Consecutive Black Blocks with multiple approaches.
1197. Minimum Knight Moves - Detailed Explanation
Learn to solve Leetcode 1197. Minimum Knight Moves with multiple approaches.
Related Courses
Grokking the Coding Interview: Patterns for Coding Questions
Grokking the Coding Interview Patterns in Java, Python, JS, C++, C#, and Go. The most comprehensive course with 476 Lessons.
4.6
(69,299 learners)
$197
New

Grokking Modern AI Fundamentals
Master the fundamentals of AI today to lead the tech revolution of tomorrow.
3.9
(1,107 learners)
$78
Grokking Data Structures & Algorithms for Coding Interviews
Unlock Coding Interview Success: Dive Deep into Data Structures and Algorithms.
4
(26,683 learners)
$78
One-Stop Portal For Tech Interviews.
Copyright © 2025 Design Gurus, LLC. All rights reserved.