represents the cool down time needed for a particular task. Iterate through each task. When we want to try and schedule a task to run, check the array to see if that’s allowed. Update coolDownTimeLeft after every iteration [A, A, B, C]
schedule A - > [2, 0, 0 .. 0]
try to schedule A, can’t. schedule B instead -> [1, 2, 0 .. 0]
try to schedule A, can’t. schedule C instead -> [0, 1, 2 .. 0]
try to schedule A again -> [2, 0, 1, 0]
A -> B -> C -> A