面試題17 列印從1到最大到n位數

2021-10-04 13:46:33 字數 1158 閱讀 3700

次題其實考察的是大數問題,但是我目前是用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 為正整數

"""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)

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))

面試題17 列印從1到最大的n位數

輸入數字n,按順序列印出從1最大的n位十進位制數。比如輸入3,則列印出1 2 3一直到最大的3位數即999。2.1 跳進面試官陷阱 分析 這道題目看起來很簡單。我們看到這個問題之後,最容易想到的辦法就是先求出最大的n位數,然後用乙個迴圈從1開始逐個列印。於是寫出以下 void printtomaxo...

面試題17 列印從1到最大的n位數

我自己的實現,常規思路 include include using namespace std bool increment str char num str,int str len else if num str i 9 num str i 0 else return true void my p...

面試題17 列印從1到最大的n位數

題目 輸入數字n,按順序列印出從1到最大的n位十進位制數 分析 由於n未知,可能是非常大的數,常規的資料型別可能裝不下,考慮用字串陣列來儲存數字,但需要考慮一下兩個問題 字串陣列表示數字的相加演算法 通過模擬十進位制數的加法過程完成或其他方法 規範得列印出數字。include 題目 列印1到n位的最...