劍指Offer12 n位最大十進位制數問題

2021-09-26 15:09:21 字數 790 閱讀 7880

鍵盤輸入乙個整數n,要求編寫函式實現按順序列印出從1開始到最大的n位十進位制數。例如輸入3,則列印輸出1、2、3…999;最大的3位數是999.

由於沒有指定n的範圍因此n有可能會很大,例如50,100等,此時最大的n位十進位制數將超出int和long的範圍,因此不宜使用int和long來定義臨時變數。

public class code012 

//當n較小時,直接用整數遞增遍歷列印

private static void printnums01(int n)

if(nsum>=10)else

}else

}return isoverflow;

}//思路3:用數字排列的方法表示:如果我們在數字前面補0的話,就會發現n位所有十進位制數其實就是n個從0到9的全排列。也就是說,我們把數字的

//每一位都從0到9排列一遍,就得到了所有的十進位制數。當然列印的時候,我們應該將前面的0補位去掉。

public static void printnums03(int n)

stringbuffer s = new stringbuffer(n);

for(int i = 0; i < n; i++)

for(int i = 0; i < 10; i++)

}public static void print1tomaxofndigits_3_recursely(stringbuffer s, int n , int index)

for(int i = 0; i < 10; i++)

}}

劍指Offer第12題(列印1到最大的n位數)

本部落格旨在個人總結回顧 題目描述 輸入數字n,按順序列印出從1到最大的n位十進位制數。比如輸入3,則列印1 2 3一直到最大的3位數即999。解題思路 看似特別簡單的題目,越是面試官挖坑給你跳。因為題目的解法真的特別簡單,根本就沒有面試的需要。一般這樣看似簡單的問題,但沒有規定數字範圍,往往就是考...

劍指offer 學習筆記 求1 2 n

面試題64 求1 2 n。不能用乘除法 for while if else switch case等關鍵字及條件判斷語句 包括a?b c 法一 建構函式求解。迴圈讓相同的 迴圈執行n次,我們也可以不用迴圈語句完成,先定義乙個型別,接著建立n個該型別的物件,那麼這個型別的建構函式就會被呼叫n次 inc...

劍指offer刷題 求1 2 n

題目 求1 2 n,要求不能使用乘除法,for while if else switch case等關鍵字及條件判斷語句 a?b c 要求不能使用乘除和一些語句,因此我們可以設計遞迴思路,並且用位運算子來判斷是否到達遞迴終止的條件。另外,我們可以用c 建構函式來設計出一種思路,具體見 class s...