var leastInterval = function(tasks, n) {
if (n === 0) return tasks.length;
const map = {}
for(let task of tasks){
if(!map[task]) {
map[task] = 1;
} else{
map[task] += 1;
}
}
let max = 0;
for(let task in map){
max = Math.max(max, map[task]);
}
let count = 0;
for(let task in map){
if(map[task] === max){
count++;
}
}
return Math.max((max - 1) * (n + 1) + count, tasks.length)
};