253. Meeting Rooms II

Problem:

Given an array of meeting time intervals consisting of start and end times [[s1,e1],[s2,e2],...] (si < ei), find the minimum number of conference rooms required.

Example 1:

Input: [[0, 30],[5, 10],[15, 20]]
Output: 2

Example 2:

Input: [[7,10],[2,4]]
Output: 1

NOTE: input types have been changed on April 15, 2019. Please reset to default code definition to get new method signature.

Solutions:

class Solution {
public:
    struct MeetingEvent {
        int time;
        bool start;

        MeetingEvent(int time, bool start) {
            this->time = time;
            this->start = start;
        }

        bool operator< (const MeetingEvent& event) const {
            if (this->time == event.time) {
                return !(this->start);
            } else {
                return this->time < event.time;
            }
        }
    };

    int minMeetingRooms(vector<vector<int>>& intervals) {
        vector<MeetingEvent> events;
        for (auto& interval : intervals) {
            events.push_back({interval[0], true});
            events.push_back({interval[1], false});
        }

        sort(events.begin(), events.end());
        int count = 0;
        int ret = 0;
        for (int i = 0; i < events.size(); ++i) {
            if (events[i].start) {
                ++count;
                ret = max(ret, count);
            } else {
                --count;
            }
        }

        return ret;
    }
};

results matching ""

    No results matching ""