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

2021-08-03 02:07:52 字數 590 閱讀 3077

題目描述:

輸入乙個正整數陣列,把陣列裡所有數字拼接起來排成乙個數,列印能拼接出的所有數字中最小的乙個。例如輸入陣列,則列印出這三個數字能排成的最小數字為321323。

實現如下:

//要將所有元素組合成乙個最小的數

//那麼組合的相鄰元素之間都是num1num2的形式

//所以使用庫函式的sort將各個元素以strcompare的條件進行排序

//strcompare的條件為比較num1num2與num2num1之間的大小,較小的情況返回為true

//注意

//1.在進行元素組合時有可能發生數值溢位的情況,所以使用字串進行比較和組合

//2.輸入vector為空

//3.輸入vector只有乙個元素時,直接輸出

class solution

public:

string printminnumber(vector

numbers)

};

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

輸入乙個正整數陣列,把陣列裡所有數字拼接起來排成乙個數,列印能拼接出的所有數字中最小的乙個。例如輸入陣列,則列印出這三個數字能排成的最小數字為321323。當然這個題可以用暴力求解,那麼複雜度會比較高,在這裡利用stl演算法sort可以自己定義排序的規則,這樣將兩個數拼接之後的數進行比較,比較完之後...

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

輸入乙個正整數陣列,把陣列裡所有數字拼接起來排成乙個數,列印能拼接出的所有數字中最小的乙個。例如輸入陣列,則列印出這三個數字能排成的最小數字為321323。暴力破解最為迅速 將所有的數字排列都求出來再比較大小。對於數字的全排列,在27題已經做過了。全排列class solution ret min ...

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

輸入乙個正整數陣列,把陣列裡所有數字拼接起來排成乙個數,列印能拼接出的所有數字中最小的乙個。例如輸入陣列,則列印出這三個數字能排成的最小數字為321323。因為要拼接int數字,所以這裡面涉及到int越界問題,所以題目返回string 主要是制定比較演算法來對陣列進行排序,return a b 從大...