Which station has the least work
Jobs are queued against stations on a line. Find the station currently carrying the fewest hours so the next job can be routed there.
- Each station is an index from 0 up to stationCount - 1.
- Sum the hours of every job queued at each in-range station.
- The answer is the index with the smallest total; ties go to the lowest index.
- Jobs pointing at an out-of-range station are ignored.
- With zero stations or no in-range jobs the answer is 0.
least_loaded_station(jobs: list<Job>, station_count: int) → int
Where you start
def least_loaded_station(jobs: list[Job], station_count: int) -> int:
Worked examples
| Call | Result |
|---|---|
least_loaded_station([Job(station=0, hours=10), Job(station=1, hours=5), Job(station=0, hours=2)], 2) | 1 |
least_loaded_station([Job(station=0, hours=3), Job(station=1, hours=3)], 2) | 0 |
least_loaded_station([Job(station=5, hours=10)], 3) | 0 |
least_loaded_station([], 4) | 0 |
Hint
Tally per station in an array, then walk the array keeping a running best index.
Reference solution in Python
def least_loaded_station(jobs: list[Job], station_count: int) -> int:
if station_count <= 0:
return 0
totals = [0] * station_count
for j in jobs:
if 0 <= j.station < station_count:
totals[j.station] += j.hours
best = 0
for i in range(1, station_count):
if totals[i] < totals[best]:
best = i
return best