Skip to content

Instantly share code, notes, and snippets.

@blacksheep557
Created May 20, 2020 07:02
Show Gist options
  • Select an option

  • Save blacksheep557/d7e2aceb1ed5d7478c8b69aa8a77fd32 to your computer and use it in GitHub Desktop.

Select an option

Save blacksheep557/d7e2aceb1ed5d7478c8b69aa8a77fd32 to your computer and use it in GitHub Desktop.
function taskScheduler(tasks = [], n = 1) {
let charMap = {};
tasks.forEach((task) => {
if (charMap[task] !== undefined) {
charMap[task] += 1
} else {
charMap[task] = 1;
}
});
let charList = [];
for (let task in charMap) {
charList.push([task, charMap[task]])
}
charList.sort((a, b) => b[1] - a[1]);
let maxFrequency = charList[0][1];
let idleSlots = (maxFrequency - 1) * n;
for (let i = 1; i < charList.length; i++) {
if (charList[i][1] === maxFrequency) {
idleSlots -= maxFrequency - 1
} else {
idleSlots -= charList[i][1]
}
}
console.log(charList);
return idleSlots <= 0 ? tasks.length : tasks.length + idleSlots;
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment