Back to all solutions
#2365 - Task Scheduler II
Problem Description
You are given a 0-indexed array of positive integers tasks, representing tasks that need to be completed in order, where tasks[i] represents the type of the ith task.
You are also given a positive integer space, which represents the minimum number of days that must pass after the completion of a task before another task of the same type can be performed.
Each day, until all tasks have been completed, you must either:
- Complete the next task from tasks, or
- Take a break.
Return the minimum number of days needed to complete all tasks.
Solution
/**
* @param {number[]} tasks
* @param {number} space
* @return {number}
*/
var taskSchedulerII = function(tasks, space) {
const map = new Map();
let result = 0;
for (const task of tasks) {
result++;
if (map.has(task)) {
const lastDay = map.get(task);
if (result - lastDay <= space) {
result = lastDay + space + 1;
}
}
map.set(task, result);
}
return result;
};