forked from shuboc/LeetCode-2
-
Notifications
You must be signed in to change notification settings - Fork 0
/
car-fleet.py
59 lines (56 loc) · 1.81 KB
/
car-fleet.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
# Time: O(nlogn)
# Space: O(n)
# N cars are going to the same destination along a one lane road.
# The destination is target miles away.
#
# Each car i has a constant speed speed[i] (in miles per hour),
# and initial position position[i] miles towards the target along the road.
#
# A car can never pass another car ahead of it,
# but it can catch up to it, and drive bumper to bumper at the same speed.
#
# The distance between these two cars is ignored - they are assumed to
# have the same position.
#
# A car fleet is some non-empty set of cars driving at the same position
# and same speed.
# Note that a single car is also a car fleet.
#
# If a car catches up to a car fleet right at the destination point,
# it will still be considered as one car fleet.
#
# How many car fleets will arrive at the destination?
#
# Example 1:
#
# Input: target = 12, position = [10,8,0,5,3], speed = [2,4,1,1,3]
# Output: 3
# Explanation:
# The cars starting at 10 and 8 become a fleet, meeting each other at 12.
# The car starting at 0 doesn't catch up to any other car, so it is a fleet
# by itself.
# The cars starting at 5 and 3 become a fleet, meeting each other at 6.
# Note that no other cars meet these fleets before the destination,
# so the answer is 3.
#
# Note:
# - 0 <= N <= 10 ^ 4
# - 0 < target <= 10 ^ 6
# - 0 < speed[i] <= 10 ^ 6
# - 0 <= position[i] < target
# - All initial positions are different.
class Solution(object):
def carFleet(self, target, position, speed):
"""
:type target: int
:type position: List[int]
:type speed: List[int]
:rtype: int
"""
times = [float(target-p)/s for p, s in sorted(zip(position, speed))]
result, curr = 0, 0
for t in reversed(times):
if t > curr:
result += 1
curr = t
return result