関連する質問が複数ありますが、私のケースに固有の解決策を探しています。(通常) 14 個の整数の配列があり、それぞれが 1 ~ 34 の範囲にあります。特定の静的リスト内の各 int がこの配列に少なくとも 1 回出現するかどうかをすばやく確認するにはどうすればよいでしょうか?
参考までに、私は現在このコードを使用しています。このコードは可能な限り仕様に似せて作成されているため、大幅に改善される可能性があります。
if (array.Count < 13) {
return;
}
var required = new int[] {
0*9 + 1,
0*9 + 9,
1*9 + 1,
1*9 + 9,
2*9 + 1,
2*9 + 9,
3*9 + 1,
3*9 + 2,
3*9 + 3,
3*9 + 4,
3*9 + 5,
3*9 + 6,
3*9 + 7,
};
IsThirteenOrphans = !required.Except (array).Any ();
必要なリストは動的ではありません。つまり、実行時に常に同じになります。Linq の使用はオプションです。主な側面はパフォーマンスです。
編集:
- 入力配列はソートされていません。
- 入力値は複数回表示される場合があります。
- 入力配列には、少なくとも 14 個の項目が含まれます。つまり、必要な配列よりも 1 つ多くなります。
- 必要な配列は 1 つだけで、静的です。
- 必須の値は異なります。
- ヒストグラムは安価に作成できると考えるかもしれません。
更新:ソートされた入力配列のソリューションにも興味があります。