py_room_scheduler · Python
▶ Aprender py_room_scheduler (Python) paso a paso · explicación de py_room_scheduler
Código línea a línea
Tres columnas: el código, el trozo del subject o del main que obliga a escribir esa línea, y el por qué.
py_room_scheduler.py
| Código | Subject | Por qué |
|---|---|---|
def py_room_scheduler(meetings: list[list[int]]) -> dict: | def py_room_scheduler(meetings: list[list[int]]) -> dict[str, Any]: | Firma del subject. Any necesitaría import typing, y el examen no permite imports: anoto dict a secas. |
rooms = [] | a list of lists containing the scheduled intervals for each room | Cada sala es una lista de reuniones en orden. |
for start, end in sorted(meetings): | Sort meetings by start time and assign them to available rooms sequentially. | sorted ordena por inicio (y desempata por fin). Desempaqueto cada [start, end] al vuelo. No muto la entrada: sorted crea una lista nueva. |
for room in rooms: | assign them to available rooms sequentially | Busco la primera sala libre, en orden de creación. |
if room[-1][1] <= start: | without overlap | Sala libre si su última reunión acaba antes o justo cuando empieza esta. <=: acabar a las 10 y empezar a las 10 no se solapan. |
room.append([start, end]) | La meto en esa sala. Lista nueva [start, end], no la de la entrada. | |
break | Ya colocada: dejo de buscar sala. | |
else: | the minimum number of meeting rooms required | else del for: solo entra si el bucle acabó sin break, es decir, ninguna sala libre. |
rooms.append([[start, end]]) | Sala nueva con esta reunión dentro. | |
return {"total_rooms": len(rooms), "schedule": rooms} | `"total_rooms"`: the integer count of rooms required. `"schedule"`: a list of lists containing the scheduled intervals for each room. | Las dos claves exactas del subject. Con [] sale {"total_rooms": 0, "schedule": []} sin caso especial. |