FastPrepFastPrep
Problem Brief

Task Scheduler

FULLTIMEOA
See Amazon online assessment and hiring insights

AMZ Interval Collection (A group of problems focused on operations involving intervals :) -

1. Task Scheduler (Full-Time)

2. Merge Intervals (Intern, NG)

3. Find Overlapping Times (Intern)

4. Get Maximum Sum Find Overlapping Times (Full-Time)

5. Optimal Interval Difference

Given an array of intervals where intervals[i] = [starti, endi], merge all overlapping intervals, and return an array of the non-overlapping intervals that cover all the intervals in the input.

You are given an array of CPU tasks, each labeled with a letter from A to Z, and a number n. Each CPU interval can be idle or allow the completion of one task. Tasks can be completed in any order, but there's a constraint: there has to be a gap of at least n intervals between two tasks with the same label.

Return the minimum number of CPU intervals required to complete all tasks.

Function Description

Complete the function leastInterval in the editor.

leastInterval has the following parameters:

  1. 1. char[] tasks: an array of uppercase English letters representing tasks
  2. 2. int n: the cooling interval

Returns

int: the minimum number of intervals to complete all tasks

( ˶ˆᗜˆ˵ ) Many Manyy Manyyy thanks to spike!ᯓᡣ𐭩

1Example 1

Input
tasks = ["A","A","A","B","B","B"], n = 2
Output
8
Explanation

A possible sequence is: A -> B -> idle -> A -> B -> idle -> A -> B.

After completing task A, you must wait two intervals before doing A again. The same applies to task B. In the 3rd interval, neither A nor B can be done, so you idle. By the 4th interval, you can do A again as 2 intervals have passed.

2Example 2

Input
tasks = ["A","C","A","B","D","B"], n = 1
Output
6
Explanation

A possible sequence is: A -> B -> C -> D -> A -> B.

With a cooling interval of 1, you can repeat a task after just one other task.

3Example 3

Input
tasks = ["A","A","A","B","B","B"], n = 3
Output
10
Explanation

A possible sequence is: A -> B -> idle -> idle -> A -> B -> idle -> idle -> A -> B.

There are only two types of tasks, A and B, which need to be separated by 3 intervals. This leads to idling twice between repetitions of these tasks.

Constraints

Limits and guarantees your solution can rely on.

  • 1 <= tasks.length <= 10^4
  • tasks[i] is an uppercase English letter.
  • 0 <= n <= 100
public int leastInterval(char[] tasks, int n) {
  // write your code here (You might also want to checkout LC 261)
}
Input

tasks

["A","A","A","B","B","B"]

n

2

Output

8

Sign in to submit your solution.