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

2021-10-19 23:27:21 字數 680 閱讀 7276

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

我的思路是按照每一位比較數字的大小,進行排序,但這對於數量級不同,某些數字相同的數來說不能、滿足題意,因此參考了網上的教程。

網上的教程先將陣列排序,但是按照正常的排序方法顯然不行,因此自定義了排序函式,根據字串的大小來排序。此處涉及到sort函式的一些應用。

如何實現比較函式cmp:

若比較函式不填,則預設按照從小到大的順序排列。

如果想要從大到小排列可以這樣寫比較函式:

bool

cmp(

int a,

int b)

關於本題,核心也是如何重寫cmp函式,本題是要是按照字串拼接後數字最小,因此可以這麼寫cmp函式:

static

bool

cmp(

int a,

int b)

class

solution

string printminnumber

(vector<

int> numbers)

};

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

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

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

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

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

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