玩命加载中 . . .

252-会议室


LeetCode 252. 会议室

给定一个会议时间安排的数组 intervals ,每个会议时间都会包括开始和结束的时间 intervals[i] = [starti, endi] ,请你判断一个人是否能够参加这里面的全部会议。

示例 1:

输入:intervals = [[0,30],[5,10],[15,20]]
输出:false

method

排序完比较就行

bool canAttendMeetings(vector<vector<int>>& intervals) {
    sort(intervals.begin(), intervals.end());
    for (int i = 0; i < intervals.size(); i++) {
        if (i > 0 && intervals[i][0] < intervals[i - 1][1]) return false;
    }
    return true;
}

253. 会议室 II

给你一个会议时间安排的数组 intervals ,每个会议时间都会包括开始和结束的时间 intervals[i] = [starti, endi] ,返回 所需会议室的最小数量 。

示例 1:

输入:intervals = [[0,30],[5,10],[15,20]]
输出:2

method

求任意时刻存在重叠的区间的最大值

按开始时间和结束时间进行排序,来一个开始时间,cur就加1,来一个结束时间,cur就减1,保存cur的最大值

struct cmp {
    bool operator()(const pair<int,int>& lhs, const pair<int,int>& rhs) {
        if (lhs.first == rhs.first) return lhs.second < rhs.second;
        return lhs.first < rhs.first;
    }
};
int minMeetingRooms(vector<vector<int>>& intervals) {
    vector<pair<int, int>> times;
    for (auto& elem : intervals) {
        times.push_back({elem[0], 1});
        times.push_back({elem[1], -1});
    }
    sort(times.begin(), times.end(), cmp());    // 不用cmp也可以
    int res = 0;
    int cur = 0;
    for (auto& t : times) {
        cur += t.second;
        res = max(res, cur);
    }
    return res;
}

文章作者: kunpeng
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 kunpeng !
  目录