一意の値を抽出する 1 つの解決策は、各行に適用Array[i].Distinct()
し、各行からすべての一意の要素のリストを作成することです。次に、このリストについて繰り返すことができますList.Distinct()
。
T[] UniqueValues
しかし、から作成するより効率的な方法はありますT[][] Data
か? ありがとう
一意の値を抽出する 1 つの解決策は、各行に適用Array[i].Distinct()
し、各行からすべての一意の要素のリストを作成することです。次に、このリストについて繰り返すことができますList.Distinct()
。
T[] UniqueValues
しかし、から作成するより効率的な方法はありますT[][] Data
か? ありがとう
var distinct = array.SelectMany(a => a).Distinct().ToArray();
これは、ネストされた配列をシーケンスにフラット化しDistinct
、個別の要素を見つけるために呼び出すだけです。ToArray
個別のシーケンスの長さは事前にわからないため、への呼び出しは多少非効率的です。個別の要素が少数しかない場合、これが問題になる可能性はほとんどありません。
入力配列が大きい場合は、要素をコピーして新しい配列に要素をコピーし、基数ソートを実行してから、等しい要素をスキップしながらソートされた配列を反復処理する方が速い場合があります。