劍指offer列印從1到最大的n位數

2021-10-10 19:41:19 字數 1820 閱讀 2381

輸入數字 n,按順序列印出從 1 到最大的 n 位十進位制數。比如輸入 3,則列印出 1、2、3 一直到最大的 3 位數 999
d1,double d2)注意強制轉換為int

int count =

(int

)math.

pow(

10,n)

;

class

solution

return ans;

}}

觀察可知,生成的列表實際上是 n 位 0 - 9 的 全排列 ,因此可避開進製操作,通過遞迴生成數字的 string 列表。

class

solution

;public string printnumbers

(int n)

void

dfs(

int x)

for(

char i : loop)

}}

輸入:n = 1

輸出:"0,1,2,3,4,5,6,7,8,9"

輸入:n = 2

輸出:"00,01,02,...,10,11,12,...,97,98,99"

輸入:n = 3

輸出:"000,001,002,...,100,101,102,...,997,998,999"

1.可以採用 integer.parseint();

2.可以通過乙個 start標識位來判斷需要去除0的個數,看下面**說明。

只需要判斷是不是為0,即可。

class

solution

;public string printnumbers

(int n)

void

dfs(

int x)

for(

char i : loop)

//回溯演算法要進行nine--;

nine--;}

}

class

solution

private

void

dfs(

int n)

for(

char i =

'0'; i <=

'9'; i++)}

}

1.當num的下標index是0時,則loop從下標1開始進行全排列

2. 當num的下標index非0時,則loop從下標0開始進行全排列

public

class

solution

; stringbuilder sb =

newstringbuilder()

;public string printnumber

(int len)

return sb.

deletecharat

(sb.

length()

-1).

tostring()

;}public

void

dfs(

int index,

int len)

int start =0;

//若從0作為起點:if(index == 0 && len>1)

//若從1作為起點

if(index ==0)

else

for(

int i=start;i<

10;i++)}

}

劍指offer 列印從1到最大的n位數

輸入數字n,按順序列印出從1最大的n位十進位制數。比如輸入3,則列印出1 2 3一直到最大的3位數即999。因為題目沒有說明數在什麼範圍內,所以這是乙個大數問題,模擬加一或者用全排列來做 解法一 void print1tomaxofndigits int n bool addone int numb...

劍指offer 列印1到最大n位數

面試題12 題目 輸入數字n,按照順序答應出從1最大的n位十進位制數。比如輸入3,則列印出1 2 3一直到最大的三位數即999。對於這道題進行時,咱們會進行一些分析,當你輸入3時,最大的三位數是999,這就是說這個最大的數是9 10 n 1 9 10 n 2 9 10 0。所以在這我想學習c語言的初...

劍指offer 列印1到最大的n位數

題目 輸入數字n,按順序列印出從1最大的n位十進位制數。比如輸入3,則列印出1,2,3一直到最大的3位數999.1 這是乙個典型的大數加法問題,當面試官不允許使用biginteger實現大數加法的時候,通常是使用字串或者陣列實現其功能。2 在大數的加法中,我們需要注意的問題是對變數number不斷遞...