Dejo como resolvi el ejercicio de Car Pooling:
def car_pooling(trips: list[list[int]], capacity: int) -> bool:
trips.sort(key=lambda x: x[1]) # Ordenamos por inicios de viajes
ongoing_trips = [] # heap para registrar los viajes que aceptas [[kilometroFinal, noPasajeros]]
kilometer = 0
while trips:
while ongoing_trips and kilometer == ongoing_trips[0][0]:
capacity += ongoing_trips[0][1]
heapq.heappop(ongoing_trips)
while trips and kilometer == trips[0][1]:
if capacity >= trips[0][0]:
heapq.heappush(ongoing_trips, [trips[0][2], trips[0][0]])
capacity -= trips[0][0]
trips.pop(0) # Eliminamos de la lista el viaje tomado
else:
return False # No se pudo aceptar un viaje
kilometer += 1
return True
¿Quieres ver más aportes, preguntas y respuestas de la comunidad?