Skip to content

2174. Next Greater Numerically Balanced Number

Hash Table Math Backtracking Counting Enumeration

Problem - Next Greater Numerically Balanced Number

Medium

An integer x is numerically balanced if for every digit d in the number x, there are exactly d occurrences of that digit in x.

Given an integer n, return the smallest numerically balanced number strictly greater than n.

 

Example 1:

Input: n = 1
Output: 22
Explanation: 
22 is numerically balanced since:
- The digit 2 occurs 2 times. 
It is also the smallest numerically balanced number strictly greater than 1.

Example 2:

Input: n = 1000
Output: 1333
Explanation: 
1333 is numerically balanced since:
- The digit 1 occurs 1 time.
- The digit 3 occurs 3 times. 
It is also the smallest numerically balanced number strictly greater than 1000.
Note that 1022 cannot be the answer because 0 appeared more than 0 times.

Example 3:

Input: n = 3000
Output: 3133
Explanation: 
3133 is numerically balanced since:
- The digit 1 occurs 1 time.
- The digit 3 occurs 3 times.
It is also the smallest numerically balanced number strictly greater than 3000.

 

Constraints:

  • 0 <= n <= 106

Solutions

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
class Solution:
    def nextBeautifulNumber(self, n: int) -> int:
        for val in count(n + 1):
            tmp = val
            counter = [0] * 10

            while tmp:
                tmp, remain = divmod(tmp, 10)
                counter[remain] += 1

            if all(num == 0 or i == num for i, num in enumerate(counter)):
                return val

Submission Stats:

  • Runtime: 2923 ms (46.91%)
  • Memory: 17.6 MB (96.91%)