Leetcode Day6 1
劍指 Offer 17. 打印從1到最大的n位數(shù)
輸入數(shù)字 n,按順序打印出從 1 到最大的 n 位十進制數(shù)。比如輸入 3,則打印出 1、2、3 一直到最大的 3 位數(shù) 999。
這道題主要是要考慮到大數(shù)問題,即在超過int,long long范圍的情況下如何將需要的數(shù)打印出來,這時候就需要對字符串進行處理。
所有的數(shù)字就是0~9的全排列(當然,需要考慮前面都是0的情況,這時候要進行處理)
也就是說一旦開頭為零,就截去數(shù)組內(nèi)的第一個值
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

標簽: