面試題:把數組排成最小的數

輸入一個正整數數組,把數組裏所有數字拼接起來排成一個數,打印能拼接處的所有數字中最小的一個。例如,輸入數組{3,32,321},則打印出這3個數字能排成的最小數字321323。

思路:暴力全排列基本屬於不可考慮的情況,O(n!)。那麼考慮兩個數字拼成一個後再跟下一個拼,那麼也能得到最小數字,這樣子就能得到O(nlogn),好太多了這效率。還要注意一點,假如數組有點大,那麼一個Int是收不完的,最後要轉成string。代碼就省略了,相信有這思路,再思考一下就能做出來了。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章