Find Minimum Number of Rooms Required

Given an array of time intervals (start, end) for classroom lectures (possibly overlapping), find the minimum number of rooms required.

Example:

Input:  arr={{30,75},{0,50},{60,150}}
Output: 2

Approach:

C++

#include <bits/stdc++.h>
using namespace std;

//function to find the minimum rooms
//required
int minimumRooms(vector<vector<int>> &arr)
{
    vector<intstartTime;
    vector<intendTime;
    for (int i = 0i < arr.size(); i++)
    {
        startTime.push_back(arr[i][0]);
        endTime.push_back(arr[i][1]);
    }

    //sort the startTime array
    sort(startTime.begin(), startTime.end());

    //sort the endTime array
    sort(endTime.begin(), endTime.end());

    int start = 0end = 0;
    int maxRooms = 0count = 0;

    while (start < startTime.size() || end < endTime.size())
    {
        //if start time reach end of the startTime
        //then break
        if (start >= startTime.size())
        {
            break;
        }
        if (startTime[start] < endTime[end])
        {
            count++;
            start++;
        }
        else
        {
            count--;
            end++;
        }

        //update maximum rooms
        maxRooms = max(maxRoomscount);
    }
    return maxRooms;
}
int main()
{
    vector<vector<int>> arr = {{3075}, {050}, {60150}};

    int ans = minimumRooms(arr);

    cout << ans << "\n";

    return 0;
}

//Time Complexity: O(nlogn)


No comments:

Post a Comment