関連する質問は複数ありますが、自分のケースに固有の解決策を探しています。(通常)14個の整数の配列があります。各intが正確に2回表示されるかどうか(つまり、7つのペアがあるかどうか)をすばやく判断するにはどうすればよいですか?値の範囲は1〜35です。ここでの主な側面はパフォーマンスです。
参考までに、これが私の現在の解決策です。これは、パフォーマンスを考慮せずに可能な限り仕様に類似するように作成されているため、大幅に改善できると確信しています。
var pairs = Array
.GroupBy (x => x)
.Where (x => x.Count () == 2)
.Select (x => x.ToList ())
.ToList ();
IsSevenPairs = pairs.Count == 7;
Linqの使用はオプションです。それが速い限り、私はどのように気にしません:)
編集: intがn> 1で2n回出現するという特殊なケースがあります。この場合、チェックは失敗するはずです。つまり、7つの異なるペアが存在するはずです。
編集:結果 私は小さな変更を加えてAniとJonのソリューションをテストし、ターゲットアプリでの複数のベンチマーク実行中に、AniのマシンでのJonのスループットが約2倍であることがわかりました(Win7-64の一部のCore 2 Duo)。intの配列の生成には、それぞれのチェックと同じくらいの時間がかかるので、結果に満足しています。皆さんありがとう!