Meeting Rooms II (Leetcode 253)

扫描线算法,如下两种实现方式:

1. TreeMap
class Solution {
public:
    int minMeetingRooms(vector<Interval>& intervals) {
        map<int, int> mp;
        for(auto it : intervals){
            mp[it.start] += 1;
            mp[it.end] -= 1;
        }
        int cnt = 0, res = 0;
        for(auto it : mp){
            cnt += it.second;
            if(cnt > res) res = cnt;
        }
        return res;
    }
};
2. 用struct来建立对应关系
class Solution {
public:
    struct Point{
      int val;
      int isStart;
      Point(int v, int i):val(v), isStart(i){}
    };
    int minMeetingRooms(vector<Interval>& intervals) {
        if(intervals.empty()) return 0;
        vector<Point> vt;
        int cur = 0, res = 0;
        for(auto it : intervals){
            vt.push_back(Point(it.start, 1));
            vt.push_back(Point(it.end, -1));
        }
        auto comp = [](const Point &v1, const Point &v2){
            if(v1.val == v2.val){
                return v1.isStart < v2.isStart;
            }
            return v1.val < v2.val;
        };
        sort(vt.begin(), vt.end(), comp);
        for(int i=0; i<vt.size(); i++){
            cur += vt[i].isStart;
            if(cur > res) res = cur;
        }
        return res;
    }
};
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 从三月份找实习到现在,面了一些公司,挂了不少,但最终还是拿到小米、百度、阿里、京东、新浪、CVTE、乐视家的研发岗...
    时芥蓝阅读 42,429评论 11 349
  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 175,043评论 25 709
  • 苇子认识微博先生之前是个大大咧咧的女汉子,雷厉风行。 一手组建了学校的新媒体,是名气不小的校媒联盟主席团成员,天南...
    空杯L阅读 3,188评论 10 3
  • http://cdimage.kali.org/kali-weekly/ Index of /kali-weekl...
    simeon2015阅读 6,561评论 0 1
  • 没有哪个女人不喜欢漂亮的鞋子、首饰和包包。那些说不在乎物质基础的姑娘不过是奢望不来罢了,狐狸说葡萄酸的事情很常见啊...
    八命先生阅读 8,498评论 43 63