1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
| class Solution:
def nextBeautifulNumber(self, n: int) -> int:
self.cnt = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
def dfs(n, val, sz):
if sz == 0:
for i in range(1, 10):
if (self.cnt[i] != i and self.cnt[i] != 0):
return 0
return val if val > n else 0
res = 0
for i in range(1, 10):
if res == 0 and self.cnt[i] > 0 and self.cnt[i] <= sz:
self.cnt[i] -= 1
res = dfs(n, val * 10 + i, sz - 1)
self.cnt[i] += 1
return res
sz = len(str(n))
return dfs(n, 0, sz) or dfs(0, 0, sz + 1)
|