Проверяет умение за один проход по массиву одновременно находить начало группы однотипных элементов и её длину, что важно для оптимизации алгоритмов.
Задача сводится к линейному сканированию массива с сохранением двух переменных состояния: индекса начала текущей группы и счётчика её длины. Пока элементы соответствуют заданному типу, счётчик увеличивается; при первом несоответствии фиксируется результат.
function findGroup(arr, isTarget) {
let start = -1;
let length = 0;
for (let i = 0; i < arr.length; i++) {
if (isTarget(arr[i])) {
if (start === -1) start = i; // фиксируем начало
length++;
} else if (start !== -1) {
break; // группа закончилась
}
}
return { start, length };
}
// пример: найти первую группу чётных чисел
const res = findGroup([1, 3, 4, 6, 8, 9, 10], x => x % 2 === 0);
// res = { start: 2, length: 3 }
Подобный приём используется при парсинге логов, обработке потоков данных, поиске подряд идущих записей в БД, анализе временных рядов и в алгоритмах сжатия (например, RLE). Он позволяет избежать повторных проходов и лишних аллокаций.
Итог: если нужно найти первую (или любую) группу однотипных элементов и её длину, одного линейного прохода достаточно — это оптимально по времени и памяти.