criskgl
10/15/2019 - 5:36 PM

Task Scheduler

public class Main {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		char[] tasks = {'C','D','D','H'};
		int coolingInterval = 2;
		System.out.println(leastInterval(tasks, coolingInterval));
	}
    public static int leastInterval(char[] tasks, int n) {
    	int[] counter = new int[3];
        for(char task : tasks){
            counter[task-'A']++;
        }
        Arrays.sort(counter);
        int time = 0;
        while(counter[2]>0){
            int i=0, j=2;
            while(i<=n && counter[j]>0){
                counter[j]--;
                time++;
                i++;
                j = j==0?2:j-1;
            }
            Arrays.sort(counter);
            if(counter[2]==0){
                break;
            }
            time = time + (n - i + 1); // if left over tasks is less than 'n'
        }
		return time;
    }
}