次题其实考察的是大数问题,但是我目前是用python3进行编程,在python中没有数字的限制,所以会出现直接循环的效率比用大数的方法要快,但是这里还是建议大家先思考大数方法:
其实就是输入n就定义一个n长度的数组,每一个位置代表真实数字对应的位置,然后分辨从0-9循环通过字符串进行转换,防止超出传统的int或者long的最大范围
"""
title:打印从1到最大的n位数
introduce:
输入数字 n,按顺序打印出从 1 到最大的 n 位十进制数。比如输入 3,则打印出 1、2、3 一直到最大的 3 位数 999。
示例 1:
输入: n = 1
输出: [1,2,3,4,5,6,7,8,9]
说明:
用返回一个整数列表来代替打印
n 为正整数
来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/da-yin-cong-1dao-zui-da-de-nwei-shu-lcof
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。
"""
from typing import List
class Solution:
def printNumbers(self, n: int) -> List[int]:
nums = []
temp = [0 for i in range(n)]
def dashu(temp, n, index):
if index == n - 1:
ch = ''
for c in temp:
ch = ch + str(c)
nums.append(int(ch))
else:
for i in range(10):
temp[index+1] = i
dashu(temp.copy(), n, index+1)
for i in range(10):
temp[0] = i
dashu(temp.copy(), n, 0)
return nums[1:]
"""
python中效率高的方法
class Solution:
def printNumbers(self, n: int) -> List[int]:
max = 10**n
return list(1, range(max))
"""
if __name__ == "__main__":
a = Solution()
print(a.printNumbers(2))