Problem · Intervals

Reschedule k Meetings to Find Maximum Break Time

HardGooglePHONE SCREEN
See Google hiring insights

For example, there are n = 4 presenters scheduled for the course of the event which begins at time 0 and ends at time t = 15. The meetings start at times start = [4, 6, 7, 10] and end at times finish = [5, 7, 8, 11]. You can rearrange up to k = 2 meetings. In this case, we have 4 periods without speakers scheduled: [0-3], [5], [8-9], [11-14]. The meeting ends after hour 14. If the first meeting is shifted to an hour later, a break is created from 0 to 5 (5 hours). If the last speech is moved up to 8, it will end at 9, leaving a break from 9 to 15. There is no point in moving the middle two speeches in this case. The longest break that can be achieved is 15 - 9 = 6 hours by moving the last speech two hours earlier.

Function Description

Complete the function findMaximumBreakTime in the editor.

findMaximumBreakTime has the following parameters:

  1. 1. int[] start: an array of integers representing the start times of meetings
  2. 2. int[] finish: an array of integers representing the end times of meetings
  3. 3. int t: the total duration of the day
  4. 4. int k: the number of meetings that can be rescheduled

Returns

int: the maximum break time that can be achieved by rescheduling up to k meetings

Examples
01 · Example 1
start = [4, 6, 7, 10]
finish = [5, 7, 8, 11]
t = 15
k = 2
return = 6
The longest break that can be achieved is 15 - 9 = 6 hours by moving the last speech two hours earlier.
Constraints
  • 1≤n≤10^5 (number of events)
  • 0≤k≤n (number of reschedules allowed)
  • 1≤t≤10^9 (total duration of the day)
  • 0≤start[i]
  • More Google problems
    drafts saved locally
    public int findMaximumBreakTime(int[] start, int[] finish, int t, int k) {
      // write your code here
    }
    
    start[4, 6, 7, 10]
    finish[5, 7, 8, 11]
    t15
    k2
    expected6
    checking account