给出飞机的起飞和降落时间的列表,用 interval 序列表示. 请计算出天上同时最多有多少架飞机?
样例
对于每架飞机的起降时间列表:[[1,10],[2,3],[5,8],[4,7]]
, 返回3
。
注意
如果多架飞机降落和起飞在同一时刻,我们认为降落有优先权。
/**
* Definition of Interval:
* classs Interval {
* int start, end;
* Interval(int start, int end) {
* this->start = start;
* this->end = end;
* }
*/
class Solution {
public:
int countOfAirplanes(vector<Interval> &airplanes) {
if(airplanes.empty())
return 0;
map<int,int> count;
set<int> base;
for(auto &e:airplanes){
++count[e.start]; //e.start时刻天上飞机增加一架
--count[e.end]; //e.end时刻天上飞机减少一架
base.insert(e.start); //把所有起飞,降落的时刻都排序,所以用set
base.insert(e.end);
}
int cur=0,mx=0;
for(auto &e:base){ //此时base中的时刻成升序排列,即e是逐渐增大
cur+=count[e]; //cur用来记录当前(即e时刻)天上飞机的总数量
mx=max(cur,mx);
}
return mx;
}
};