2

一意の値を抽出する 1 つの解決策は、各行に適用Array[i].Distinct()し、各行からすべての一意の要素のリストを作成することです。次に、このリストについて繰り返すことができますList.Distinct()

T[] UniqueValuesしかし、から作成するより効率的な方法はありますT[][] Dataか? ありがとう

4

1 に答える 1

2
var distinct = array.SelectMany(a => a).Distinct().ToArray();

これは、ネストされた配列をシーケンスにフラット化しDistinct、個別の要素を見つけるために呼び出すだけです。ToArray個別のシーケンスの長さは事前にわからないため、への呼び出しは多少非効率的です。個別の要素が少数しかない場合、これが問題になる可能性はほとんどありません。

入力配列が大きい場合は、要素をコピーして新しい配列に要素をコピーし、基数ソートを実行してから、等しい要素をスキップしながらソートされた配列を反復処理する方が速い場合があります。

于 2013-04-04T17:47:05.843 に答える