Menu
CoddyTech

Car Fleet

中等栈排序python iconjava iconcpp iconc iconjs icon+10

汽车沿着一条单车道公路驶向里程标记为 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