[LeetCode253]Meeting Rooms II

Given an array of meeting time intervals consisting of start and end times [[s1,e1],[s2,e2],...] (si < ei), find the minimum number of conference rooms required.

For example,
Given [[0, 30],[5, 10],[15, 20]],
return 2.

Hide Company Tags Google Facebook
Hide Tags Heap Greedy Sort
Hide Similar Problems (H) Merge Intervals (E) Meeting Rooms

这题刚开始想着用个stack按照上一个结束时间和当前开始时间的关系in, out。不对。
看了大家的解法。 用map存储所有start end point,并且++mp[start], –mp[end]. 因为map 是ordered的, 最后traverse 所有elements in map 求room += m.second. 这样做就可以知道最大重叠meeting的个数,也就可以求出我们到底最少需要多少meeting room。

class Solution {
public:
    int minMeetingRooms(vector<Interval>& intervals) {
        if(intervals.empty()) return 0;
        map<int, int> mp;
        for(Interval i : intervals){
            ++mp[i.start];
            --mp[i.end];
        }
        int room = 0, maxRoom = INT_MIN;
        for(auto m : mp){
            maxRoom = max(maxRoom, room += m.second);
        }
        return maxRoom;
    }
};
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值