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→ 0numalready 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
3419. Minimize the Maximum Edge Weight of Graph - Detailed Explanation
Learn to solve Leetcode 3419. Minimize the Maximum Edge Weight of Graph with multiple approaches.
93. Restore IP Addresses - Detailed Explanation
Learn to solve Leetcode 93. Restore IP Addresses with multiple approaches.
1980. Find Unique Binary String - Detailed Explanation
Learn to solve Leetcode 1980. Find Unique Binary String with multiple approaches.
51. N-Queens - Detailed Explanation
Learn to solve Leetcode 51. N-Queens with multiple approaches.
1275. Find Winner on a Tic Tac Toe Game - Detailed Explanation
Learn to solve Leetcode 1275. Find Winner on a Tic Tac Toe Game with multiple approaches.
2275. Largest Combination With Bitwise AND Greater Than Zero - Detailed Explanation
Learn to solve Leetcode 2275. Largest Combination With Bitwise AND Greater Than Zero 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
$197

Grokking Modern AI Fundamentals
Master the fundamentals of AI today to lead the tech revolution of tomorrow.
3.9
$78

Grokking Data Structures & Algorithms for Coding Interviews
Unlock Coding Interview Success: Dive Deep into Data Structures and Algorithms.
4
$78
One-Stop Portal For Tech Interviews.
Copyright © 2026 Design Gurus, LLC. All rights reserved.