九章算法 | Amazon 面试题:数飞机

这篇博客讨论了如何解决Amazon面试题——计算飞机起飞和降落列表中天上同时最多有多少架飞机。提出了两种算法:前缀和与扫描线。前缀和算法在时间复杂度为O(Time)、空间复杂度也为O(Time);扫描线算法时间复杂度为O(NlogN),空间复杂度为O(N),其中N为飞机数量。文章提供了样例并分析了复杂度。
摘要由CSDN通过智能技术生成

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

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

LintCode 领扣


样例 1:

输入: [(1, 10), (2, 3), (5, 8), (4, 7)]
输出: 3
解释: 
第一架飞机在1时刻起飞, 10时刻降落.
第二架飞机在2时刻起飞, 3时刻降落.
第三架飞机在5时刻起飞, 8时刻降落.
第四架飞机在4时刻起飞, 7时刻降落.
在5时刻到6时刻之间, 天空中有三架飞机.

样例 2:

输入: [(1, 2), (2, 3), (3, 4)]
输出: 1
解释: 降落优先于起飞.

算法一 前缀和

在开始时间位置+1架飞机,在结束时间-1架飞机,求一遍前缀和,就是对应时间飞机的数量,

前缀和算法涉及到了对时间离散化,所以这里更推荐扫描线

算法二 扫描线

扫描线,把飞机按开始时间从小到大排序,如果开始时间相同,

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值