Find Servers That Handled Most Number of Requests LeetCode solution in JavaScript

1
var busiestServers = function (k, arrival, load) {
2
let loadMap = {};
3
let pq = new MinPriorityQueue({ compare: (a, b) => a[1] - b[1] });
4
let availableServers = new Set(new Array(k).fill(0).map((_, index) => index));
5

6
for (let i = 0; i < arrival.length; i++) {
7
// calc end time
8
let end = arrival[i] + load[i];
9

10
// bring server back
11
while (pq.front()?.[1] <= arrival[i]) {
12
const [server] = pq.dequeue();
13
availableServers.add(server);
14
}
15

16
let server = i % k;
17
// drop if no available server
18
if (availableServers.size === 0) continue;
19

20
// find the next avaiable sever
21
while (!availableServers.has(server)) {
22
server++;
23
if (server === k + 1) {
24
server = 0;
25
}
26
}
27

28
// record the load
29
if (!loadMap[server]) {
30
loadMap[server] = 0;
31
}
32

33
loadMap[server]++;
34

35
availableServers.delete(server);
36
pq.enqueue([server, end]);
37
}
38

39
let res = [];
40
let sorted = Object.entries(loadMap).sort((a, b) => b[1] - a[1]);
41
let max = sorted[0][1];
42
let i = 0;
43
while (sorted[i]?.[1] === max) {
44
res.push(+sorted[i++][0]);
45
}
46

47
return res;
48
};

0

WPM •0 •0

100%

ACC •0 •0

0s

TIME •0