【leetcode】253. 会议室 II

给定一个会议时间安排的数组,每个会议时间都会包括开始和结束的时间 [[s1,e1],[s2,e2],…] (si < ei),为避免会议冲突,同时要考虑充分利用会议室资源,请你计算至少需要多少间会议室,才能满足这些会议安排。

示例 1:

输入: [[0, 30],[5, 10],[15, 20]]
输出: 2
示例 2:

输入: [[7,10],[2,4]]
输出: 1

来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/meeting-rooms-ii
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

思路

首先进行一下排序,然后用一个小顶堆,维护当前每个会议室的结束时间,
然后当一个新的时间安排出现的时候,只需要判断一下是否需要新申请一个会议室,还是继续使用之前的会议室。

代码

class Solution {
   
public:
    int minMeetingRooms(vector<vector<int>>& intervals) {
   
        sort(intervals.begin(), intervals.end(), [](const vector<int>& a, const vector<int>&b){
   
            return a[0] < b[0];
        });
        priority_queue<int, vector<int>, greater<int>> heap;
        for (int i = 0; i < intervals.size(); i++) {
   
            if (!heap.empty() && heap.top() <= intervals[i][0]) {
   
                heap.pop();
            }
            heap.push(intervals[i][1]);
        }
        return heap.size();
    }
};

总结

没啥东西。。

全部评论

相关推荐

头像
10-09 19:35
门头沟学院 Java
洛必不可达:java的竞争激烈程度是其他任何岗位的10到20倍
点赞 评论 收藏
分享
1 1 评论
分享
牛客网
牛客企业服务