会议室

2020-04-16  本文已影响0人  李海游

会议室

一些项目要占用一个会议室宣讲,会议室不能同时容纳两个项目 的宣讲。 给你每一个项目开始的时间和结束的时间(给你一个数 组,里面 是一个个具体的项目),你来安排宣讲的日程,要求会 议室进行 的宣讲的场次最多。返回这个最多的宣讲场次.

思路:

若要使举办会议的场次最多,则应该先举办最早结束的场次。故可以先按截止时间排序,遍历排序后的数据,如果开始时间大于当前时间则跳过该会议,否则当前时间等于该会议结束的时间。

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;
    }
};

小知识:

  1. 自定义sort函数的比较器compare,传入sort时不带参数
上一篇下一篇

猜你喜欢

热点阅读