会议室
一些项目要占用一个会议室宣讲,会议室不能同时容纳两个项目 的宣讲。 给你每一个项目开始的时间和结束的时间(给你一个数 组,里面 是一个个具体的项目),你来安排宣讲的日程,要求会 议室进行 的宣讲的场次最多。返回这个最多的宣讲场次.
思路:
若要使举办会议的场次最多,则应该先举办最早结束的场次。故可以先按截止时间排序,遍历排序后的数据,如果开始时间大于当前时间则跳过该会议,否则当前时间等于该会议结束的时间。
class Solution {
public:
bool compare(vector<vector<int>> a,vector<vector<int>> b) //设计比较方式
{
if(a[0][1]!=b[0][1])
return a[0][1]<b[0][1];
else
return a[0][0]<b[0][0];
}
int minMeetingRooms(vector<vector<int>>& intervals) {
sort(intervals.begin(), intervals.end(), compare); //调用自定义比较方式的sort函数
int cur=-1; //设定当前时间
int n=0; //能举办的次数
for (int i = 0; i < intervals.size(); i++) {
if (cur<=intervals[i][0]) { //当前时间小于等于开始时间,举办该会议
++n;
cur=intervals[i][1]; //举办后 当前时间等于该会议的结束时间
}
}
return n;
}
};
小知识:
- 自定义sort函数的比较器compare,传入sort时不带参数
网友评论