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

2021-07-05 14:24:40 字數 525 閱讀 4615

華電北風吹

天津大學認知計算與應用重點實驗室

日期:2015/10/5

題目描述

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

解析:比大小即可,不過比的時候是從從左往右比。注意到字母長度有可能不一樣,長度一樣的話直接比就行了,為此在自定義的比較函式裡面分別將乙個字串加到另乙個字串後面構造出長度相同的字串,簡化比較運算。

class solution

sort(v.begin(), v.end(), comparestring);

string result = "";

for (int i = 0; i < v.size(); i++)

return result;

}static

bool comparestring(string &s1, string &s2)

};

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

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

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

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

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

輸入乙個正整數陣列,把陣列裡所有數字拼接起來排成乙個數,列印能拼接出的所有數字中最小的乙個。例如輸入陣列,則列印出這三個數字能排成的最小數字為321323。思路 首先因為陣列可能非常長,所以要定義乙個整數類,使得其大小可以容納所有的陣列元素組成的數不大現實。因此我們直接輸出這個陣列,讓其看起來像乙個...