输入数字 n,按顺序打印出从 1 到最大的 n 位十进制数。比如输入 3,则打印出 1、2、3 一直到最大的 3 位数 999。
示例 1:
输入: n = 1
输出: [1,2,3,4,5,6,7,8,9]说明:
用返回一个整数列表来代替打印
n 为正整数
这个题看起来好像很简单
思路
对于给定的正整数n,最大的n位十进制数恰好是10^(n)-1;然后再返回即可。
又因为range(a,b)返回[a,b-1],所以只需要通过range(1,10^(n))即可得到最终结果。
代码
class Solution:
def printNumbers(self, n: int) -> List[int]:
max_number = (10**n)
return [i for i in range(1,max_number)]
空间复杂度O(1);( 列表作为返回结果,不计入额外空间)
时间复杂度O(10^n);
结果
测试通过,看来确实不难
总结
1. Python生成列表的方法。除[i for i in range(a,b)]外还可以list(range(a,b));
2. Python幂运算。
3. 事实上,这道题考察的应该是大数越界时的打印。但今天还有别的事,而且本题无须考虑,所以下次遇到再说吧
当 nn 较大时,[10^(n)-1]会超出 int32整型的取值范围,超出取值范围的数字无法正常存储。但由于本题已说明"用返回一个整数列表来代替打印",相当于默认所有数字都在 int32 整型取值范围内,因此不考虑大数越界问题。