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

2021-10-05 15:12:53 字數 1008 閱讀 7489

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

解題思路:

1.首先暴力法遍歷可以求解,但是大整數問題需要另一種思路

2.構建乙個stringbuilder字串,輸入的n為多少,就賦多少個0。

3.當該字串沒有發生位數溢位的時候,迴圈列印

4.首先從最小位數開始累加,最開始為』0』,每次迴圈+1,一直到』9』

5.當該位為』9』的時候,再+1發生進製,則將該位變為0(stringbuilder的replace函式),然後for迴圈對它下一位數加1。

6.若當前位沒有發生進製,則跳出迴圈到外部方法中列印。

public

class

solution

//呼叫乙個累加函式對位數進行累加,當位數超過n停止

while(!

increment

(str)

) arraylist.

add(integer.

valueof

(str.

tostring()

.substring

(index)))

;}//這些是為了leetcode要求輸出寫的**

int[

] array=

newint

[arraylist.

size()

];int arrayindex=0;

for(integer temp:arraylist)

return array;

}public

boolean

increment

(stringbuilder str)

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

else

}return isoverflow;

}}

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

輸入數字n,按順序列印出從1到最大的n位十進位制數,比如輸入3,則列印出1,2,3一直到最大的3位數即999 首先考慮n的範圍,當輸入n很大的時候,我們求最大的n位數用int或者long都會溢位。最常用也是最容易的方法是用字串或者陣列表達大數。我們用字串來解決大數問題。public void pri...

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

問題 輸入數字n,按順序列印出從1到最大的n位十進位制數。輸入 n 輸出 列印數字 思路1 易錯思路 求出最大的n位十進位制數,然後for迴圈列印。錯誤原因 最大的n位十進位制數有可能超出int型 或longlong型 利用陣列 或字串 來表達大數。include include using nam...

劍指offer 面試題17

題目 合併兩個排序的單向鍊錶 自己所寫 如下 listnode mergesortedlists listnode phead1,listnode phead2 listnode mergetwolist listnode pfirst,listnode psecond if phead pnext...