方法一
class Solution:
def printNumbers(self, n: int) -> List[int]:
li=[]
head=1
end=9*(10**(n-1))+1
while n>=1:
for i in range(head,end):
li.append(i)
n-=1
head=li[-1]+1
end=head+9*(10**(n-1))
return li
方法二
class Solution:
def printNumbers(self, n: int) -> List[int]:
li=[]
maxnum=''
while n>=1:
maxnum+='9'
n-=1
for i in range(1,int(maxnum)+1):
li.append(i)
return li
notice
- 我好愚蠢,一直固定思维想最大数是几个9组成,看了乐扣题解直接end=10**n-1;力扣解法
- 力扣题解提到本题考虑若大数越界,因为int是32bit,当n 较大时,end会超出 int32int32 整型的取值范围,超出取值范围的数字无法正常存储。
- 基于大数越界打印,力扣有分治求解,我暂时没看懂,明天再看。