タイトル説明
正の整数の配列を入力して、一緒にスプライスされた番号に配置された全ての数字の配列は、スプライスは最小のすべての番号を印刷することができます。3,32,321入力アレイは} {例えば、3つの数の最小数は321323に配置することができる印刷します。
アイデア1
アレイ状に配置された要素の全てを取得し、その後、リターンの最小数を見つけます。探している文字列配列が参照できる平面38質問:文字列配列を、アルゴリズムの時間複雑度は、O(N!)です。
アイデア2
aおよびbは以下b及びスプライシングABステッチ次いでBの前方に配置BA、9及び10109例えば<910、それほど10未満である場合、二つの数aとbの場合:昇順で次のルールのアレイによります図9は、前にする必要があります。出力要素の後にソートすることができます。コードは以下の通りであります:
class Solution {
public:
static bool cmp(int a, int b){
string ab = to_string(a) + to_string(b);
string ba = to_string(b) + to_string(a);
return ab<ba;
}
string PrintMinNumber(vector<int> numbers) {
string ans = "";
if(numbers.empty())
return ans;
sort(numbers.begin(), numbers.end(), cmp);
for(int i=0; i<numbers.size(); i++)
ans += to_string(numbers[i]);
return ans;
}
};