Number of Airplanes in the Sky
2016-07-20 23:18
525 查看
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
Return
分析:
这题可以从1-23逐个check是否interval含有那个数。但是这题有一个更巧妙的方法:
把所有的interval分成两个部分,起飞部分和落地部分。把每个部分都加在LIST里面,然后按照时间排序,然后一一取出。如果是起飞,count++, 如果落地,count--。这个解法是不是很奇特。
如果我是面试官,我可能会换一种方式问:给一堆intervals,找出overlap最多的个数,这样,第一种解法就直接不能最为最优解了。
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最多的个数,这样,第一种解法就直接不能最为最优解了。
/** * Definition of Interval: * public classs Interval { * int start, end; * Interval(int start, int end) { * this.start = start; * this.end = end; * } */ public class Solution { /** * @param intervals: An interval array * @return: Count of airplanes are in the sky. */ public int countOfAirplanes(List<Interval> airplanes) { List<Point> list = new ArrayList<Point>(airplanes.size()*2); for(Interval i : airplanes){ list.add(new Point(i.start, 1)); list.add(new Point(i.end, 0)); } Collections.sort(list); int count = 0, ans = 0; for(Point p : list){ if(p.flag == 1) count++; else count--; ans = Math.max(ans, count); } return ans; } } class Point implements Comparable<Point> { int time; int flag; Point(int t, int s) { this.time = t; this.flag = s; } @Override public int compareTo(Point p) { if (this.time == p.time) return this.flag - p.flag; else return this.time - p.time; } }
相关文章推荐
- vim 经典配色 molokai.vim 配色安装
- LeetCode - 172. Factorial Trailing Zeroes
- (11) ejb学习: Jpa事务管理类型 container 和 bean
- rdd.filter(_.contains("1")).count()详解
- df 命令结果显示的 Size 不等于 Avail + Used
- df 命令结果显示的 Size 不等于 Avail + Used
- Visual Studio 2015 update 2 setup fails with "missing or damaged package kb3022398"
- 【2016 Multi-University Training Contest 1】【hdu5723】Abandoned Countries
- pair与排序
- 2015 Multi-University Training Contest 1_A(hdu 5288)
- 注意:MainActivity的oncreate方法里不要再inflate布局了(MainActivity里的点击事件无响应)
- HDU 5729 Rigid Frameworks (from: 2016 Multi-University Training Contest)
- 2016 Multi-University Training Contest 1-1004---HDU 5726 GCD
- UVA - 10494 If We Were a Child Again
- 【CF 578D】LCS again
- 2016 Multi-University Training Contest 1 Abandoned country
- 2016 Multi-University Training Contest 1-1001---HDU 5723 Abandoned country(DFS+最小生成树)
- DDD领域驱动设计(Domain Driven Design)(转)
- HDU 5724 Chess(2016 Multi-University Training Contest 1的1002题)
- HDU 5029 Relief grain(恶心的树链剖分 + 线段树)