輸入數字 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 整型取值範圍內,因此不考慮大數越界問題。