Number of Airplanes in the Sky

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

分析:

这题可以从1-23逐个check是否interval含有那个数。但是这题有一个更巧妙的方法:

把所有的interval分成两个部分,起飞部分和落地部分。把每个部分都加在LIST里面,然后按照时间排序,然后一一取出。如果是起飞,count++, 如果落地,count--。这个解法是不是很奇特。

如果我是面试官,我可能会换一种方式问:给一堆intervals,找出overlap最多的个数,这样,第一种解法就直接不能最为最优解了。

 1 /**
 2  * Definition of Interval:
 3  * public classs Interval {
 4  *     int start, end;
 5  *     Interval(int start, int end) {
 6  *         this.start = start;
 7  *         this.end = end;
 8  *     }
 9  */
10
11 public class Solution {
12     /**
13      * @param intervals: An interval array
14      * @return: Count of airplanes are in the sky.
15      */
16     public int countOfAirplanes(List<Interval> airplanes) {
17
18         List<Point> list = new ArrayList<Point>(airplanes.size()*2);
19     for(Interval i : airplanes){
20       list.add(new Point(i.start, 1));
21       list.add(new Point(i.end, 0));
22     }
23
24     Collections.sort(list);
25     int count = 0, ans = 0;
26     for(Point p : list){
27       if(p.flag == 1) count++;
28       else count--;
29       ans = Math.max(ans, count);
30     }
31
32     return ans;
33     }
34 }
35
36 class Point implements Comparable<Point> {
37     int time;
38     int flag;
39
40     Point(int t, int s) {
41         this.time = t;
42         this.flag = s;
43     }
44
45     @Override
46     public int compareTo(Point p) {
47         if (this.time == p.time)
48             return this.flag - p.flag;
49         else
50             return this.time - p.time;
51     }
52 }
时间: 2024-10-07 06:07:00

Number of Airplanes in the Sky的相关文章

391. Number of Airplanes in the Sky

391. Number of Airplanes in the Sky Given an interval list which are flying and landing time of the flight. How many airplanes are on the sky at most? Example For interval list [ (1,10), (2,3), (5,8), (4,7) ] Return 3 Notice If landing and flying hap

[LintCode] Number of Airplanes in the Sky

Given an interval list which are flying and landing time of the flight. How many airplanes are on the sky at most? Example For interval list [[1,10],[2,3],[5,8],[4,7]], return 3 Note If landing and flying happens at the same time, we consider landing

lintcode-medium-Number of Airplanes in the Sky

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],

[MeetCoder] Count Pairs

Count Pairs Description You are given n circles centered on Y-aixs. The ith circle’s center is at point (i, 0) and its radius is A[i]. Count the number of pairs of circles that have at least one common point? Input The input should be a list of n pos

Sweep Line

391. Number of Airplanes in the Sky https://www.lintcode.com/problem/number-of-airplanes-in-the-sky/description?_from=ladder&&fromId=4 思路:将起飞时间和降落时间放到同一个数组中, 标识出是起飞还是降落时间, 然后对数组排序,遍历数组即可, 碰到起飞计数器加一, 碰到降落计数器减一. 维护最大值作为答案. 注意降落优先于起飞 可通过flag标记降落为0 上升

Sky number

描述 key 天生对数字特别敏感,一次偶然的机会,他发现了一个有趣的四位数2992,这个数,它的十进制数表示,其四位数字之和为2+9+9+2=22,它的十六进 制数BB0,其四位数字之和也为22,同时它的十二进制数表示1894,其四位数字之和也为22.key非常喜欢这种四位数(三种进制的和相等),由于他 的发现,所以这里我们命名其为key数.但是要判断这样的数还是有点麻烦啊,那么现在请你帮忙来判断任何一个十进制的四位数,是不是key数吧. 输入 输入含有一些四位正整数,如果为0,则输入结束. 输

NYOJ-Sky number

Sky number 时间限制:1000 ms  |  内存限制:65535 KB 难度:1 描述 key天生对数字特别敏感,一次偶然的机会,他发现了一个有趣的四位数2992,这个数,它的十进制数表示,其四位数字之和为2+9+9+2=22,它的十六进制数BB0,其四位数字之和也为22,同时它的十二进制数表示1894,其四位数字之和也为22.key非常喜欢这种四位数(三种进制的和相等),由于他的发现,所以这里我们命名其为key数.但是要判断这样的数还是有点麻烦啊,那么现在请你帮忙来判断任何一个十进

Sky数

Time Limit: 1000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total Submission(s): 16448    Accepted Submission(s): 9444 Problem Description Sky从小喜欢奇特的东西,并且天生对数字特别敏感.一次偶然的机会,他发现了一个有趣的四位数2992,这个数,它的十进制数表示,其四位数字之和为2+9+9+2=22,它的十六进

hdu2097 nyoj414 sky数 (进制转换)

Sky number 时间限制:1000 ms  |  内存限制:65535 KB 难度:1 描述 key天生对数字特别敏感,一次偶然的机会,他发现了一个有趣的四位数2992,这个数,它的十进制数表示,其四位数字之和为2+9+9+2=22,它的十六进制数BB0,其四位数字之和也为22,同时它的十二进制数表示1894,其四位数字之和也为22.key非常喜欢这种四位数(三种进制的和相等),由于他的发现,所以这里我们命名其为key数.但是要判断这样的数还是有点麻烦啊,那么现在请你帮忙来判断任何一个十进