🖥 Задача: Конференц-залы II.
https://t.me/pythonlСложность задачи: Средняя
Условие задачи:
Дан массив интервалов времени проведения совещаний, intervals, где intervals[i] = [start(i), end(i)]. Найдите минимальное требуемое количество конференц-залов.
Пример:
Ввод: intervals = [[0,30],[5,10],[15,20]]
Вывод: 2
Ввод: intervals = [[7,10],[2,4]]
Вывод: 1
Метод : Два указателя + сортировка
сортируем время начала и время окончания.
Инициализируем индекс начала и конца как 0.
если время начала < времени окончания, значит, у нас есть встреча в состоянии, active++.
else active--.
Нам необходимо записать максимальный номер комант (конференц-залов) .
class Solution {
public int minMeetingRooms(int[][] intervals) {
int len = intervals.length;
int[] startTime = new int[len];
int[] endTime = new int[len];
int index = 0;
for(int[] interval: intervals){
startTime[index] = interval[0];
endTime[index++] = interval[1];
}
Arrays.sort(startTime);
Arrays.sort(endTime);
int i = 0, j = 0;
int activate = 0, max = 0;
while(i < len && j < len){
if(startTime[i] < endTime[j]){
activate++;
i++;
}else{
activate--;
j++;
}
max = Math.max(max, activate);
}
return max;
}
}