Task Scheduler
Given a string array tasks
, representing the tasks a CPU needs to do, where each string represents a different task. Tasks could be done in any order and each Task takes one unit of time. For each unit of time, the CPU could complete either one task or just be idle.
However, there is a non-negative integer K
that represents the cooldown period between two same tasks , that is that there must be at least K
units of time between any two same tasks.
Return the least number of units of times that the CPU will take to finish all the given tasks.
Input Format :-
First Parameter :- n
, number of tasks.
Second Parameter :- tasks
, string array .
Third Parameter :- k
, Cooldown Period between two similar tasks.
Output Format :-
Return the least number of units of time.
Example 1 :
Input:
6
A A A B B B
2
Output:
8
Explanation:
A -> B -> idle -> A -> B -> idle -> A -> B. There is at least 2 units of time between any two same tasks.
Example 2 :
Input:
6
A A A B B B
0
Output:
6
Explanation:
On this case any permutation of size 6 would work since n = 0.
Example 3:
Input:
12
A A A A A A B C D E F G
2
Output :
16
Explanation:
One possible solution is A -> B -> C -> A -> D -> E -> A -> F -> G -> A -> idle -> idle -> A -> idle -> idle -> A
Constraints :
- 1 <= task.length <= 104.
- task[i] is upper-case English letter.
- The integer
n
is n the range [0,100]. - Expected Time Complexity : O(n), where
n
is the number of tasks. - Expected Space Complexity : O(1).