You are given an integer array nums.
The digit range of an integer is defined as the difference between its largest digit and smallest digit.
For example, the digit range of 5724 is 7 - 2 = 5.
Return the sum of all integers in nums whose digit range is equal to the maximum digit range among all integers in the array.
Example 1:
Input: nums = [5724,111,350]
Output: 6074
Explanation:
i |
nums[i] |
Largest | Smallest | Digit Range |
|---|---|---|---|---|
| 0 | 5724 | 7 | 2 | 5 |
| 1 | 111 | 1 | 1 | 0 |
| 2 | 350 | 5 | 0 | 5 |
The maximum digit range is 5. The integers with this digit range are 5724 and 350, so the answer is 5724 + 350 = 6074.
Example 2:
Input: nums = [90,900]
Output: 990
Explanation:
i |
nums[i] |
Largest | Smallest | Digit Range |
|---|---|---|---|---|
| 0 | 90 | 9 | 0 | 9 |
| 1 | 900 | 9 | 0 | 9 |
The maximum digit range is 9. Both integers have this digit range, so the answer is 90 + 900 = 990.
Constraints:
1 <= nums.length <= 10010 <= nums[i] <= 105Problem Overview: You need to identify integers whose digit range is the largest among all numbers in the input. The digit range is typically computed as maxDigit - minDigit for each integer. After finding the maximum range, sum every integer that matches it.
Approach 1: Brute Force Digit Comparison (O(n * k), O(1))
Iterate through every number and extract its digits one by one using modulo and division operations. For each integer, track the smallest and largest digit encountered, then compute the digit range. Store the largest range seen so far and update the running sum accordingly. This approach works well because digit extraction is cheap, and each number contains at most k digits. Problems involving repeated digit processing often appear under Math and Implementation categories.
Approach 2: Single Pass Optimized Tracking (O(n * k), O(1))
You can optimize the logic by combining range calculation and result aggregation in a single traversal. As you process each integer, compute its digit range immediately. If the range exceeds the current maximum, reset the accumulated sum to the current number. If the range matches the maximum, add the number to the sum. This avoids storing intermediate arrays or maps and keeps memory usage constant. The key insight is that you only care about the current best digit range, not every previously computed value.
Approach 3: Precomputed Digit Statistics (O(n * k), O(n))
For repeated queries on the same dataset, you can precompute the digit range for every number and cache the results in an auxiliary array. This makes later aggregations or filtering operations faster because the expensive digit extraction step runs once. The tradeoff is additional memory usage proportional to the number of integers. This pattern is common in Array preprocessing problems where multiple passes are expected.
Recommended for interviews: Interviewers usually expect the single-pass tracking approach because it demonstrates efficient state management and clean implementation. Starting with the brute force explanation shows you understand the underlying digit operations, while the optimized pass proves you can reduce unnecessary storage and combine computations effectively.
Solutions for this problem are being prepared.
Try solving it yourself| Approach | Time | Space | When to Use |
|---|---|---|---|
| Brute Force Digit Comparison | O(n * k) | O(1) | Best for straightforward implementations and interviews |
| Single Pass Optimized Tracking | O(n * k) | O(1) | General optimal solution with constant extra memory |
| Precomputed Digit Statistics | O(n * k) | O(n) | Useful when multiple queries reuse the same numbers |
3982. Sum of Integers with Maximum Digit Range (Leetcode Easy) • Programming Live with Larry • 191 views views
Watch 6 more video solutions →Practice Sum of Integers with Maximum Digit Range with our built-in code editor and test cases.
Practice on FleetCodePractice this problem
Open in Editor