Problems › JavaScript › machines
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.
leastLoadedStation(jobs: list<Job>, stationCount: int) → int
Where you start
function leastLoadedStation(jobs, stationCount) {
}
Worked examples
| Call | Result |
|---|---|
leastLoadedStation([{"station":0,"hours":10},{"station":1,"hours":5},{"station":0,"hours":2}], 2) | 1 |
leastLoadedStation([{"station":0,"hours":3},{"station":1,"hours":3}], 2) | 0 |
leastLoadedStation([{"station":5,"hours":10}], 3) | 0 |
leastLoadedStation([], 4) | 0 |
Hint
Tally per station in an array, then walk the array keeping a running best index.
Reference solution in JavaScript
function leastLoadedStation(jobs, stationCount) {
if (stationCount <= 0) return 0;
const totals = new Array(stationCount).fill(0);
for (const j of jobs) {
if (j.station < 0 || j.station >= stationCount) continue;
totals[j.station] += j.hours;
}
let best = 0;
for (let i = 1; i < totals.length; i++) if (totals[i] < totals[best]) best = i;
return best;
}