面接の質問です。正の整数の配列があり、結果の数値がこの配列を使用して形成できる最大数になるように、配列要素を再配置して結合する必要があります。
例えば:
[884 88] -> 88884
[20 19 90] -> 902019
[909 90] -> 90990
私の解決策:最初に要素を最上位桁(MSD)で降順で並べ替えると思いました。
つまり、909、12、88 の場合、ソート後に 909、88、12 になり、同じ MSD を持つ場合は 2 番目の MSD をソートし、これを続けます。
したがって、配列 909, 99 の場合、99 と 909 があり、それらを結合します。しかし、配列 909, 90 の場合、90, 909 になります。両方の数値で共通の 90 があるため、ここに問題があります。
90
909 ---> ここでは2つの組み合わせが可能で、90は共通なので909から共通部分を除いた9が残っているので、90にこの9を追加すると大きくなるかどうかを調べます。この場合、90 の前に 9 を追加すると、909 よりも大きい 990 が得られるため、909 の後に 90 が続きます。したがって、答えは 90990 です。
しかし、コーディングしようとすると、複雑すぎてコーディングが難しいことがわかりました。助言がありますか?