class Solution:
def printNumbers(self, n: int) -> List[int]:
# 任意变量类型,数字的取值范围都是有限的。
# 所以大数的表示应用字符串 String 类型
def dfs(x):
if x == n:
# 最后的位数
s = ''.join(num[self.start:])
if s!='0':
res.append(int(s))
if n - self.start == self.nine:
self.start -= 1
return
for i in range(10):
if i == 9:
self.nine += 1
num[x] = str(i)
dfs(x+1)
self.nine -= 1
num, res = ['0'] * n, []
self.nine = 0
self.start = n-1
dfs(0)
return res
每日一道Leetcode - 剑指 Offer 17. 打印从1到最大的n位数【递归|大数越界】
最新推荐文章于 2024-07-20 17:12:48 发布