Есть несколько связанных вопросов, но я ищу решение, специфичное для мое дело. Существует массив (обычно) из 14 целых чисел, каждое в диапазоне от 1 до 34. Как я могу быстро определить, появляется ли каждое целое число в конкретном статическом списке хотя бы один раз в этом массиве?
Для справки: I ' m в настоящее время использует этот код, который был написан для максимального сходства со спецификацией, поэтому его, безусловно, можно значительно улучшить:
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 необязательно, главным аспектом является производительность.
Изменить:
Обновление: Меня также интересует решение для отсортированного входного массива.