把陣列排成最小的數(劍指offer第33題)

2021-09-02 06:54:12 字數 622 閱讀 6203

一、題目描述

輸入乙個正整數陣列,把陣列裡所有數字拼接起來排成乙個數,

列印能拼接出的所有數字中最小的乙個。例如輸入陣列,

則列印出這三個數字能排成的最小數字為321323。

二、解題思路

1.最直接的辦法就是先求出這個陣列中所有數字的全排列,然後把每個排列拼接起來,最後求出拼接起來的數字的最小值。求陣列的排列和字串排列非常相近。根據排列組合知識,n個數字總共有n!個排列。

2.採用比較陣列中字串大小的方法。

根據題目要求,兩個數字m和n能拼接成數字mn和數字nm,如果mni;j--)}}

string s = "";

for(int i=0;ilist = new arraylist();

for(int i=0;i()

});for(int j:list)

return s;

}//測試一下

public static void main(string args)

solution_33 solution_33 = new solution_33();

system.out.println(solution_33.printminnumber(array));

}}

劍指offer 把陣列排成最小的數

華電北風吹 天津大學認知計算與應用重點實驗室 日期 2015 10 5 題目描述 輸入乙個正整數陣列,把陣列裡所有數字拼接起來排成乙個數,列印能拼接出的所有數字中最小的乙個。例如輸入陣列,則列印出這三個數字能排成的最小數字為321323。解析 比大小即可,不過比的時候是從從左往右比。注意到字母長度有...

劍指offer 把陣列排成最小的數

輸入乙個正整數陣列,把陣列裡所有數字拼接起來排成乙個數,列印能拼接出的所有數字中最小的乙個。例如輸入陣列,則列印出這三個數字能排成的最小數字為321323。分析 將int型的陣列轉化為string型的陣列,再將string型的陣列排序,排序規則依據比較兩個string變數相加後的大小 注意這個cmp...

劍指offer 把陣列排成最小的數

題目 輸入乙個正整數陣列,把陣列裡所有數字拼接起來排成乙個數,列印能拼接出的所有數字中最小的乙個。例如輸入陣列,則列印出這三個數字能排成的最小數字為321323。分析 題目要求比較整數陣列組成後的數的大小,在int及long中來處理很容易超出範圍,實際上大數問題一般放在字串中來處理。我們把陣列元素兩...