Menu
CoddyTech

Non-overlapping Intervals

Интервал i длится от starts[i] до ends[i]. Верните минимальное количество интервалов, которые нужно удалить, чтобы никакие два из оставшихся не перекрывались. Два интервала, которые только соприкасаются, когда один заканчивается точно в той точке, где начинается другой, не перекрываются.

Функция

eraseOverlapIntervals(starts: integer-array, ends: integer-array) → integer
startsinteger-array
начало каждого интервала
endsinteger-array
конец каждого интервала с тем же индексом, что и его начало
Возвращаетinteger
минимальное количество интервалов, которые нужно удалить, чтобы остальные не пересекались

Ограничения

  • 1 ≤ starts.length == ends.length ≤ 5000
  • -5 × 104 ≤ starts[i] < ends[i] ≤ 5 × 104
  • Интервалы не отсортированы. Два интервала могут быть одинаковыми.

Примеры

Ввод
starts = [3, 1, 5, 2]ends = [6, 4, 7, 3]
Вывод
2
Пояснение
В порядке начала интервалы такие: [1,4], [2,3], [3,6] и [5,7]. Оставьте [2,3] и [3,6], которые только соприкасаются, а остальные 2 удалите. Три интервала оставить нельзя: [1,4] пересекается с [2,3], а [3,6] пересекается с [5,7].
challenge icon

Дополнительный вопрос

Предположим, у каждого интервала есть значение, и вы хотите найти наибольшую суммарную стоимость среди непересекающихся интервалов. Продолжает ли работать выбор интервала, который заканчивается первым?

Сбросить код
def eraseOverlapIntervals(starts, ends):
    # Напишите код здесь

Тест #1

Тест #2

Тест #3

Аргументы

starts = [3, 1, 5, 2]
ends = [6, 4, 7, 3]

Ожидаемый вывод

2