面試題17 打印從1到最大的n位數(Python3)

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

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章