Leetcode Day6 1
剑指 Offer 17. 打印从1到最大的n位数
输入数字 n,按顺序打印出从 1 到最大的 n 位十进制数。比如输入 3,则打印出 1、2、3 一直到最大的 3 位数 999。
这道题主要是要考虑到大数问题,即在超过int,long long范围的情况下如何将需要的数打印出来,这时候就需要对字符串进行处理。
所有的数字就是0~9的全排列(当然,需要考虑前面都是0的情况,这时候要进行处理)
也就是说一旦开头为零,就截去数组内的第一个值
class Solution:
def printNumbers(self, n: int) -> List[int]:
res=[]
nums=['0']*n
def dfs(x:int):
if x==n:
num=''.join(nums)
while num.startswith('0'):
num=num[1:]
if num:res.append(int(num))
return
for i in range(0,10):
nums[x]=str(i)
dfs(x+1)
dfs(0)
return res
