Tony's Log

Algorithms, Distributed System, Machine Learning

  博客园 :: 首页 :: 博问 :: 闪存 :: 新随笔 :: 联系 :: 订阅 订阅 :: 管理 ::

Linear scan after sorting. Please note sorting detail.

typedef std::pair<int, bool> Rec;
class Solution 
{
public:
    int minMeetingRooms(vector<Interval>& intervals) 
    {
        vector<Rec> pts;
        for (int i = 0; i < intervals.size(); i++)
        {
            pts.push_back(Rec(intervals[i].start, true));
            pts.push_back(Rec(intervals[i].end, false));
        }

        std::sort(pts.begin(), pts.end(), [&](const Rec &r1, const Rec &r2){
            if (r1.first < r2.first)        return true;
            else if (r1.first == r2.first)    return !r1.second && r2.second;
            return false;
        });

        int ret = 0, curr = 0;
        for (auto &r : pts)
        {
            if (r.second)    curr++;
            else            curr--;
            ret = std::max(ret, curr);
        }
        return ret;
    }
};
View Code
posted on 2015-08-22 10:37  Tonix  阅读(181)  评论(0编辑  收藏  举报