Menu
CoddyTech

Car Fleet

Các xe chạy trên một con đường một làn hướng đến cột mốc target. Xe i bắt đầu ở cột mốc position[i] và chạy với tốc độ speed[i] dặm một giờ. Không xe nào có thể vượt xe khác: xe đuổi kịp một xe chạy chậm hơn sẽ đi ngay phía sau xe đó, và từ đó hai xe di chuyển cùng nhau với tốc độ chậm hơn như một đoàn xe.

Một xe riêng lẻ cũng là một đoàn xe, và xe đến đúng lúc đoàn xe tới đích sẽ gia nhập đoàn đó. Hãy trả về số đoàn xe đến đích.

Hàm

carFleet(target: integer, position: integer-array, speed: integer-array) → integer
targetinteger
dặm mà mọi chiếc xe đều đang hướng tới
positioninteger-array
mốc đầu tiên trên đồng hồ quãng đường của mỗi chiếc xe
speedinteger-array
tốc độ của mỗi chiếc xe, tính bằng dặm một giờ
Trả vềinteger
số hạm đội đến được đích

Ràng buộc

  • n == position.length == speed.length
  • 1 ≤ n ≤ 104
  • 1 ≤ target ≤ 106
  • 0 ≤ position[i] < target
  • 1 ≤ speed[i] ≤ 106
  • Tất cả các vị trí đều khác nhau.

Ví dụ

Đầu vào
target = 20position = [14, 2, 8, 17, 0]speed = [3, 6, 4, 1, 2]
Đầu ra
2
Giải thích
Khi đi một mình, các xe ở dặm 17, 14, 8 và 2 cần lần lượt 3, 2, 3 và 3 giờ, nên xe ở dặm 14 đuổi kịp xe ở dặm 17, còn hai xe kia gặp họ tại dặm 20. Xe ở dặm 0 cần 10 giờ và đến nơi một mình.
challenge icon

Câu hỏi mở rộng

Các vị trí là số nguyên (integer) nhỏ hơn target. Bạn có thể đếm số đoàn xe trong thời gian O(n + target) mà không cần dùng thuật toán sắp xếp dựa trên phép so sánh không?

Đặt lại code
def carFleet(target, position, speed):
    # Viết code ở đây

Kiểm thử #1

Kiểm thử #2

Kiểm thử #3

Đối số

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

Đầu ra mong đợi

2