Menu
CoddyTech

Activity Selection Problem

Задание i длится с момента start[i] до момента finish[i]. Один человек выполняет только одно задание за раз, и следующее задание должно начинаться строго после завершения предыдущего: задание, начинающееся ровно в момент завершения другого, не может идти следом за ним.

Верните максимальное количество заданий, которые может выполнить один человек.

Функция

maxActivities(start: integer-array, finish: integer-array) → integer
startinteger-array
время начала каждого действия
finishinteger-array
время завершения каждого действия; finish[i] соответствует start[i]
Возвращаетinteger
наибольшее количество занятий, которые один человек может выполнять одно за другим

Ограничения

  • 1 ≤ start.length == finish.length ≤ 5000
  • 0 ≤ start[i] ≤ finish[i] ≤ 105
  • Действие может начинаться и заканчиваться одновременно. Массивы не отсортированы.

Примеры

Ввод
start = [10, 12, 20, 14, 25, 21]finish = [13, 16, 24, 19, 30, 22]
Вывод
4
Пояснение
Выполнение с 10 по 13, с 14 по 19, с 21 по 22 и с 25 по 30 даёт 4. Пять невозможно: с 10 по 13 пересекается с 12 по 16, а с 21 по 22 — с 20 по 24.
challenge icon

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

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

Сбросить код
def maxActivities(start, finish):
    # Напишите код здесь

Тест #1

Тест #2

Тест #3

Аргументы

start = [10, 12, 20, 14, 25, 21]
finish = [13, 16, 24, 19, 30, 22]

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

4