LeetCode 253. 会议室 II**(double)

具体思路:

LeetCode 253. 会议室 II**(double)_第1张图片
貌似是个经典问题,只需要看车上有几个人同时存在即可;

这里最简洁的解法没有用堆或者其他数据结构,只需要让上车cnt+1,下车cnt减1,时间节点做key,用pair存储;

排序后,进行pair队列的遍历,之后统计某个时刻cnt的最大值,即为几个人在车上;

注意一下排序,同一时间点,-1大于+1,下车优先于上车;

具体代码:

class Solution {
public:
    bool static cmp(pair<int,int>& a,pair<int,int>& b){
        if(a.first==b.first)
            return a.second<b.second;
        return a.first<b.first;
    }

    int minMeetingRooms(vector<vector<int>>& intervals) {
        vector<pair<int,int>>times;
        int ret=0;
        for(auto& vec:intervals){
            times.push_back({vec[0],1});
            times.push_back({vec[1],-1});
        }
        sort(times.begin(),times.end(),cmp);
        int cnt=0;
        for(auto& pa:times){
            cnt+=pa.second;
            ret=max(ret,cnt);
        }
        return ret;
    }
};

你可能感兴趣的:(LeetCode刷题记录,leetcode,算法,职场和发展)