アレイの最小数は配置:[45は、時間効率面質問オファー安全性を証明]

タイトル説明

正の整数の配列を入力して、一緒にスプライスされた番号に配置された全ての数字の配列は、スプライスは最小のすべての番号を印刷することができます。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;
    }
};

おすすめ

転載: www.cnblogs.com/flix/p/12514287.html