[LeetCode] 253. 会议室 II

Description

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

Example

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

Analysis

1、模拟
用优先队列维护每个会议室的结束时间,每次与最小的结束时间进行比较,更新最小结束时间或创建新的会议室
2、上下车
类似于公交车上下车,开始时间+1,结束时间-1,记录中间过程最大的值

Code

优先队列

static bool cmp(const vector<int> &a, const vector<int> &b) {
if(a[0] == b[0]) return a[1] < b[1];
return a[0] < b[0];
}
int minMeetingRooms(vector<vector<int>>& intervals) {
sort(intervals.begin(), intervals.end(), cmp);
priority_queue<int, vector<int>, greater<int>> q;
int ans = 1;
q.push(intervals[0][1]);
for(int i = 1;i < intervals.size();i++) {
if(intervals[i][0] >= q.top()) {
q.pop();q.push(intervals[i][1]);
} else {
q.push(intervals[i][1]);
}
}
return q.size();
}

上下车

int minMeetingRooms(vector<vector<int>>& intervals) {
vector<pair<int,int>> v;
for(auto i : intervals) {
v.push_back(make_pair(i[0], 1));
v.push_back(make_pair(i[1], -1));
}
sort(v.begin(), v.end());
int ans = 0, c = 0;
for(auto i : v) {
c += i.second;
ans = max(ans, c);
}
return ans;
}
posted @   Zforw  阅读(291)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 记一次.NET内存居高不下排查解决与启示
· DeepSeek 开源周回顾「GitHub 热点速览」
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
点击右上角即可分享
微信分享提示