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

2021-07-11 02:49:22 字數 734 閱讀 3840

題目描述:

輸入乙個正整數陣列,把陣列中所有數字拼接起來排成乙個數,列印能拼接出的所有數字中最小的乙個。

示例:

輸入:

輸出:321323

分析:

首先把陣列中的每個數字轉換成字串的形式,然後對所有字串進行排序

排序的規則是:a+b < b+a,則a應該在b的前面,

最後再將所有的字串拼接起來即為最終的結果

為了防止資料溢位,使用字串的形式來儲存最終結果。

並且字串起始的0都要去掉,如01234,應該只返回1234即可 

**:

static

bool cmp(string& s1,string& s2)

sort(strs.begin(),strs.end(),cmp); //step 2:按照規則排序

string res;

bool flag=true;

for(int i=0;i//step 3:將所有字串按序拼接

if(strs[i]=='0'&&flag) continue; //去掉起始的0

res+=strs[i];

flag=false;

}

return res;

}

劍指offer系列(32) 把陣列排成最小的數

題目描述 輸入乙個正整數陣列,把陣列裡所有數字拼接起來排成乙個數,列印能拼接出的所有數字中最小的乙個。例如輸入陣列,則列印出這三個數字能排成的最小數字為321323。思路分析 對陣列中每兩個元素進行組合,比較,確認出最小的排列。比如,3與32組合,332 323,所以交換3和32的位置,3與321組...

牛客 劍指offer系列題解 把陣列排成最小的數

記錄刷題的過程。牛客和力扣中都有相關題目,這裡以牛客的題目描述為主。該系列預設採用python語言。1 問題描述 輸入乙個正整數陣列,把陣列裡所有數字拼接起來排成乙個數,列印能拼接出的所有數字中最小的乙個。例如輸入陣列,則列印出這三個數字能排成的最小數字為321323。2 資料結構 陣列,字串,排序...

劍指Offer系列45 把陣列排成最小的數

輸入乙個正整數陣列,把陣列裡所有數字拼接起來排成乙個數,列印能拼接出的所有數字中最小的乙個。示例 1 輸入 10,2 輸出 102 示例 2 輸入 3,30,34,5,9 輸出 3033459 說明 輸出結果可能非常大,所以你需要返回乙個字串而不是整數 拼接起來的數字可能會有前導 0,最後結果不需要...