Number of Airplanes in the Sky
Problem
Given an interval list which are flying and landing time of the flight. How many airplanes are on the sky at most?
Notice: If landing and flying happens at the same time, we consider landing should happen at first.
Example
For interval list
[
[1,10],
[2,3],
[5,8],
[4,7]
]
Return 3
Solution
The intervals are defined with a start
time point and an end
time point. To count how many airlines are in the sky, we simply +1 for each start
we encounter, and -1 for each end
point. We can process this in several ways:
- Option 1: for each interval, we create 2 tuples:
(start, 1)
and(end, -1)
, then we sort by time (the first field), notice that the landing happens first, so the-1
should be in the front for the same time point; then we add them up, while keeping track ofmax
. - Option 2: create a Map
m
, time as key, count as value, and we process the intervals withm[start] += 1
andm[end] -= 1
, then sort the map keys, the rest is similar to Option 1. - Option 3: sort
start
andend
separately, then use 2 pointers in 2 arrays, and always process the one with the smaller time (the value of the sorted array is the time).