Menu
CoddyTech

Car Fleet

ŚrednieStosSortowaniepython iconjava iconcpp iconc iconjs icon+10

Samochody jadą jednokierunkową drogą w stronę mili target. Samochód i rozpoczyna jazdę na mili position[i] i porusza się z prędkością speed[i] mil na godzinę. Żaden samochód nie może wyprzedzić innego: samochód, który dogoni wolniejszy pojazd, pozostaje tuż za nim, a od tej chwili oba poruszają się razem z mniejszą prędkością jako jedna kolumna.

Pojedynczy samochód również tworzy kolumnę, a samochód, który dogoni kolumnę dokładnie w miejscu docelowym, dołącza do niej. Zwróć liczbę kolumn, które docierają do celu.

Funkcja

carFleet(target: integer, position: integer-array, speed: integer-array) → integer
targetinteger
mila, do której zmierza każdy samochód
positioninteger-array
początkowy przebieg każdego samochodu
speedinteger-array
prędkość każdego samochodu, w milach na godzinę
Zwracainteger
liczba flot, które docierają do celu

Ograniczenia

  • n == position.length == speed.length
  • 1 ≤ n ≤ 104
  • 1 ≤ target ≤ 106
  • 0 ≤ position[i] < target
  • 1 ≤ speed[i] ≤ 106
  • Wszystkie pozycje są różne.

Przykłady

Wejście
target = 20position = [14, 2, 8, 17, 0]speed = [3, 6, 4, 1, 2]
Wyjście
2
Wyjaśnienie
Samochody znajdujące się na milach 17, 14, 8 i 2 potrzebują odpowiednio 3, 2, 3 i 3 godzin, więc samochód z mili 14 dogania samochód z mili 17, a dwa pozostałe docierają do nich na mili 20. Samochód z mili 0 potrzebuje 10 godzin i dociera sam.
challenge icon

Pytanie dodatkowe

Pozycje są liczbami całkowitymi mniejszymi od target. Czy potrafisz policzyć floty w czasie O(n + target), bez sortowania przez porównania?

Zresetuj kod
def carFleet(target, position, speed):
    # Napisz kod tutaj

Test #1

Test #2

Test #3

Argumenty

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

Oczekiwany wynik

2