Menu
CoddyTech

Car Fleet

Автомобили едут по однополосной дороге к отметке target. Автомобиль i начинает движение с отметки position[i] со скоростью speed[i] миль в час. Обгонять другие автомобили нельзя: догнав более медленный автомобиль, машина остается прямо за ним, и с этого момента они движутся вместе с более низкой скоростью как один караван.

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

Функция

carFleet(target: integer, position: integer-array, speed: integer-array) → integer
targetinteger
миля, к которой направляется каждая машина
positioninteger-array
начальный пробег каждого автомобиля
speedinteger-array
скорость каждого автомобиля в милях в час
Возвращаетinteger
количество флотов, достигших пункта назначения

Ограничения

  • n == position.length == speed.length
  • 1 ≤ n ≤ 104
  • 1 ≤ target ≤ 106
  • 0 ≤ position[i] < target
  • 1 ≤ speed[i] ≤ 106
  • Все позиции различны.

Примеры

Ввод
target = 20position = [14, 2, 8, 17, 0]speed = [3, 6, 4, 1, 2]
Вывод
2
Пояснение
По отдельности машинам на отметках 17, 14, 8 и 2 миль нужно 3, 2, 3 и 3 часа, поэтому машина на отметке 14 догоняет машину на отметке 17, а две другие догоняют их на отметке 20 миль. Машине на отметке 0 нужно 10 часов, и она прибывает одна.
challenge icon

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

Позиции — это целые числа меньше target. Сможешь подсчитать количество автопарков за O(n + target) времени, не используя сортировку сравнением?

Сбросить код
def carFleet(target, position, speed):
    # Напишите код здесь

Тест #1

Тест #2

Тест #3

Аргументы

target = 20
position = [14, 2, 8, 17, 0]
speed = [3, 6, 4, 1, 2]

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

2