lintcode-391-数飞机
391-数飞机
给出飞机的起飞和降落时间的列表,用 interval 序列表示. 请计算出天上同时最多有多少架飞机?
注意事项
如果多架飞机降落和起飞在同一时刻,我们认为降落有优先权。
样例
对于每架飞机的起降时间列表:[[1,10],[2,3],[5,8],[4,7]], 返回3。
标签
数组 LintCode 版权所有 区间
思路
使用 map 记录起飞时刻与降落时刻飞机的数量,起飞时刻飞机数量 +1,降落时刻飞机数量 -1,然后将时刻排序,遍历排序后的时刻,寻找出最大值
code
/**
* 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
int size = airplanes.size();
if (size <= 0) {
return 0;
}
map<int, int> airCount;
set<int> airTime;
int maxCount = INT_MIN, curCount = 0;
for (int i = 0; i < size; i++) {
airCount[airplanes[i].start]++;
airCount[airplanes[i].end]--;
airTime.insert(airplanes[i].start);
airTime.insert(airplanes[i].end);
}
for (auto t: airTime) {
curCount += airCount[t];
maxCount = max(maxCount, curCount);
}
return maxCount;
}
};