621-task-scheduler

DevGod needs to write a blog entry for this problem!
/**
 * @param {character[]} tasks
 * @param {number} n
 * @return {number}
 */
var leastInterval = function(tasks, n) {
    let myMap = new Map();
    
    for(let task of tasks){
        if(!myMap.has(task)){
            myMap.set(task,0);
        }
        myMap.set(task, myMap.get(task)+1);
    }

    let maxFreq = Math.max(...myMap.values())
    let maxCount = 0;
    for(let val of myMap.values()){
        if(val == maxFreq){
            maxCount++;
        }
    }

    let score = (maxFreq-1) * (n-(maxCount-1)) + (maxFreq*maxCount);
    if(score < tasks.length){score = tasks.length;}
    
    return score;
}

//A _ _ _ A _ _ _ A | More elements if array is larger then estimate

// (MaxFreq-1)*n + MaxFreq
//(MaxFreq-1) = Amount of inbetween idle spaces
//n = size of inbetween idle spaces
//MaxFreq, amount of inbetween charecters to add

//A B _ _ A B _ _ A B

// (MaxFreq-1) = Amount of inbetween spaces
// (n-MaxCount-1) = size of inbetween idle spaces
// (MaxFreq*MaxCount) = amount of inbetween charecters
//Add more elements of array size is bigger