Выбор ответа Middle Интервалы обновлено
Слияние: ошибка с концом
Вопрос
Что вернёт функция для [[1,10],[2,3],[4,5]] и в чём ошибка?
function merge(iv) {
iv.sort((a, b) => a[0] - b[0]);
const res = [iv[0]];
for (const cur of iv.slice(1)) {
const last = res.at(-1);
if (cur[0] <= last[1]) last[1] = cur[1];
else res.push(cur);
}
return res;
}
Попробуйте сами
Выберите вариант, и откроется разбор.
Показать ответ и разбор
Коротко
Правильный ответ: [[1, 3], [4, 5]]. Ошибка в last[1] = cur[1]: нужно Math.max(last[1], cur[1]). [2,3] лежит внутри [1,10], но перезаписывает конец, и выходит [1,3].
Варианты ответа
[[1, 10]][[1, 3], [4, 5]]правильный ответ[[1, 5]][[1, 10], [4, 5]]
Разбор
Ошибка в last[1] = cur[1]: нужно Math.max(last[1], cur[1]). [2,3] лежит внутри [1,10], но перезаписывает конец, и выходит [1,3]. Затем 4 > 3, и [4,5] добавляется отдельно: [[1, 3], [4, 5]]. Правильный ответ был бы [[1, 10]].
[[1, 10]]вернула бы исправленная версия.[[1, 5]]получилось бы, если бы[4,5]тоже слился.[[1, 10], [4, 5]]: конец первого интервала всё же перезаписан.
Ответьте сами, а не прочитайте
В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.