Maximum Number of Tasks You Can Assign LeetCode solution in JavaScript

1
var maxTaskAssign = function (tasks, workers, pills, strength) {
2
workers.sort((b, a) => b - a);
3
tasks.sort((b, a) => b - a);
4

5
let lTasks = -1,
6
rTasks = Math.min(tasks.length, workers.length) - 1;
7

8
while (lTasks < rTasks) {
9
const midTasks = (lTasks + rTasks + 1) >> 1;
10
let t = midTasks;
11

12
for (
13
let w = workers.length - 1, freePills = pills, queue = [];
14
t >= 0;
15
t--
16
) {
17
if (queue[0] >= tasks[t]) {
18
queue.shift();
19
} else if (workers[w] >= tasks[t]) {
20
w--;
21
} else if (freePills > 0) {
22
while (w >= 0 && workers[w] + strength >= tasks[t])
23
queue.push(workers[w--]);
24

25
if (queue.length == 0) break;
26
queue.pop(), freePills--;
27
} else break;
28
}
29
t == -1 ? (lTasks = midTasks) : (rTasks = midTasks - 1);
30
}
31
return lTasks + 1;
32
};

0

WPM •0 •0

100%

ACC •0 •0

0s

TIME •0