のリンクでジャグ配列をフラット化:例えば、整数のジャグ配列与えられた値
var arr = new int[11][] {
new int[] { 0, 7 },
new int[] { 1 },
new int[] { 2, 5, 6 },
new int[] { 3 },
new int[] { 4 },
new int[] { 5, 6 },
new int[] { 6 },
new int[] { 7, 9 },
new int[] { 8, 10 },
new int[] { 9 },
new int[] { 10 }
};
は、それが効率的にするにはどうすればよいの項目の1次元配列を生成するために平らに自分の位置やリンクの順にそれらの値の間。上記アレイの出力は次のようになります。
{ 0, 7, 9, 1, 2, 5, 6, 3, 4, 8, 10 }
この特定の例では、それらが共通の数、それらを連結7
を有するように、{ 0, 7 }
と{ 7, 9 }
が組み合わされます。また、{ 5, 6 }
、{ 6 }
などの重複を削除します。
私はあまりにも多くの逆参照を望んでいます。可能であれば、いくつかのネストされたループは避けることができますが、LINQ/PLINQを使用している可能性があります。スマート・インプレース・ストリング操作。
何 '{0,7}'と '{7,9もし} 'と' {7、10} 'は配列に存在しますか? – dotctor
これには非効率的なアルゴリズムがありますか? – dotctor
質問は明確に定義されていません。何が起こるべきかが完全にはっきりしていないケースが多すぎます。あなたの例では、サブ配列を自由に並べ替えて "短く"なる結果が得られることを暗示しているようです。並べ替える方法が複数ある場合はどうなりますか?どちらを選ぶべきですか?いくつかの取り決めが他の取り決めより短い結果を生み出す場合 – Jon