[leetcode/lintcode 题解] Amazon 面试题:数飞机

给出飞机的起飞和降落时间的列表,用序列 interval 表示. 请计算出天上同时最多有多少架飞机?
  • 如果多架飞机降落和起飞在同一时刻,我们认为降落有优先权。
 
在线评测地址:领扣题库官网
 
 
样例 1:
样例 2:
 
算法一 前缀和
在开始时间位置+1架飞机,在结束时间-1架飞机,求一遍前缀和,就是对应时间飞机的数量,
前缀和算法涉及到了对时间离散化,所以这里更推荐扫描线
算法二 扫描线
扫描线,把飞机按开始时间从小到大排序,如果开始时间相同,结束时间小的在前,
扫描一遍,当扫描到开始时间,就会多一架飞机,飞机数+1,当扫描到结束时间就少一架飞机,飞机数-1
答案取扫描过程中的最大飞机数
 
复杂度分析
时间复杂度
算法一 前缀和
前缀和 O(Time),Time表示最大时间
算法二 扫描线
扫描线 O(NlogN),N是飞机数量
空间复杂度
算法一 前缀和
前缀和 O(Time),Time表示最大时间
算法二 扫描线
扫描线 O(N),N是飞机数量
更多题解参考:九章官网solution
 
posted @ 2020-12-16 10:59  LintCode领扣  阅读(597)  评论(0)    收藏  举报