Skip to content

Commit 21c36a0

Browse files
authored
Create the-latest-time-to-catch-a-bus.py
1 parent f3903dd commit 21c36a0

File tree

1 file changed

+26
-0
lines changed

1 file changed

+26
-0
lines changed
Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
1+
# Time: O(nlogn + mlogm)
2+
# Space: O(1)
3+
4+
# sort, two pointers
5+
class Solution(object):
6+
def latestTimeCatchTheBus(self, buses, passengers, capacity):
7+
"""
8+
:type buses: List[int]
9+
:type passengers: List[int]
10+
:type capacity: int
11+
:rtype: int
12+
"""
13+
buses.sort()
14+
passengers.sort()
15+
cnt = j = 0
16+
for i in xrange(len(buses)-1):
17+
while j < len(passengers) and passengers[j] <= buses[i]:
18+
cnt += 1
19+
j += 1
20+
cnt = max(cnt-capacity, 0)
21+
j -= max(cnt-capacity, 0)
22+
cnt = min(cnt, capacity)
23+
while j < len(passengers) and passengers[j] <= buses[-1] and cnt+1 <= capacity:
24+
cnt += 1
25+
j += 1
26+
return buses[-1] if cnt < capacity and (j-1 < 0 or passengers[j-1] != buses[-1]) else next(passengers[i]-1 for i in reversed(xrange(j)) if i-1 < 0 or passengers[i]-1 != passengers[i-1])

0 commit comments

Comments
 (0)