🖥 Задача: Конференц-залы II.

🖥 Задача: Конференц-залы 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;
    }
}


Report Page