Menu
CoddyTech

Car Fleet

車は1車線の道路を通り、マイル標識targetに向かって進みます。車iはマイル標識position[i]から出発し、時速speed[i]マイルで走ります。車はほかの車を追い越せません。遅い車に追いついた車はそのすぐ後ろにとどまり、それ以降は2台が1つの車列となって、遅いほうの速度で一緒に進みます。

1台の車も車列とみなされ、目的地にちょうど到着した時点で車列に追いついた車は、その車列に加わります。目的地に到着する車列の数を返してください。

関数

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の車に追いつき、残りの2台はマイル地点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