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