码迷,mamicode.com
首页 > 其他好文 > 详细

LintCode-数飞机

时间:2015-05-14 20:37:43      阅读:137      评论:0      收藏:0      [点我收藏+]

标签:面试   lintcode   

给出飞机的起飞和降落时间的列表,用 interval 序列表示. 请计算出天上同时最多有多少架飞机?

样例

对于每架飞机的起降时间列表:[[1,10],[2,3],[5,8],[4,7]], 返回3

注意

如果多架飞机降落和起飞在同一时刻,我们认为降落有优先权。

分析:可以根据每个线段,利用一个map来标记,对于第一个[1,10],我们标记m[1]+=1,m[10]-=1,表示在1这个时刻多了一架飞机,而在10这个时候少了一架飞机,即用m记录飞机的变化数目。注意:如果降落不具有优先权的话,也就是说在10这个时候我们可以认为还在天上的话,那么应该设m[11]-=1

代码:

/**
 * Definition of Interval:
 * classs Interval {
 *     int start, end;
 *     Interval(int start, int end) {
 *         this->start = start;
 *         this->end = end;
 *     }
 */
class Solution {
public:
    /**
     * @param intervals: An interval array
     * @return: Count of airplanes are in the sky.
     */
    int countOfAirplanes(vector<Interval> &airplanes) {
        // write your code here
        map<int,int> m;
        set<int> s;
        for(int i=0;i<airplanes.size();i++)
        {
            Interval in = airplanes[i];
            m[in.start]++;
            m[in.end]--;
            s.insert(in.start);
            s.insert(in.end);
        }
        vector<int> t;
        copy(s.begin(),s.end(),back_inserter(t));// already sorted 
        int ret = 0;
        int cnt = 0;
        for(auto x:t)
        {
            cnt+=m[x];
            ret = max(ret,cnt);
        }
        return ret;
    }
};


LintCode-数飞机

标签:面试   lintcode   

原文地址:http://blog.csdn.net/wangyuquanliuli/article/details/45724969

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!