列印從1到最大的n位數

2021-10-05 21:01:31 字數 883 閱讀 6258

輸入數字 n,按順序列印出從 1 到最大的 n 位十進位制數。比如輸入 3,則列印出 1、2、3 一直到最大的 3 位數 999。

示例 1:

輸入: n = 1

輸出: [1,2,3,4,5,6,7,8,9]

說明:用返回乙個整數列表來代替列印

n 為正整數

這道題我剛看到的時候,思路是這樣的,可以先求出n位數的最大值,再逐一放入陣列,最後進行返回。**如下:

class solution 

int arr = new int[num-1];

for(i = 0; i < num-1; i++)

return arr;

}}

但是,對於這道題如果n特別大的話,就會產生溢位的問題,因此這就是乙個大數問題,在這裡,我採用字串模擬整數相加的方式進行解題。

func函式,若發生進製則一直進行for迴圈,直到不產生進製則break。如果i為0(即到了最高位)還發生了進製,則設定isover為true,並返回至主函式的while判斷。

public static void printnumber(int n) 

while(!increment(str))

system.out.println(str.tostring().substring(index));}}

public static boolean increment(stringbuilder str)

}// 沒發生進製則跳出for迴圈

else

}return isoverflow;

}

當數值很大的時候就要考慮溢位的問題,可以採用字串或者字元進行相加輸出,因此字串模擬整數相加也是特別重要的。

列印從1到最大的n位數

題目 輸入數字n,順序列印從1到最大n位的十進位制數,例如輸入3,列印1到999 includebool increment char number void printnumber char number void printtomaxofndigitsrecursively char numbe...

列印從1到最大的n位數

void print1tomaxofndigits int n 上面的 有個最嚴重的問題 沒有關注n的範圍 當輸入的n很大時,我們求最大的n位數用int或者long long都會溢位。也就是我們需要考慮大數問題。因為數字最大是n位,所以我們需要用乙個長度是n 1的字串 字串最後一位放 0 當實際的數...

列印從1到最大的n位數

題目 輸入數字n,按順序列印出從1最大的n位十進位制數。比如輸入3,則列印出1 2 3一直到最大的3位數即999。思路 首先注意這是個大數問題,n很大的時候c 的int和long long都吃不消,所以數字的儲存要用字串 這裡我模擬了大數相加,只不過每次都是加1 另外要注意列印的問題,cout比較慢...