lintcode-【中等】数飞机
题目:
给出飞机的起飞和降落时间的列表,用 interval 序列表示. 请计算出天上同时最多有多少架飞机?
样例:
对于每架飞机的起降时间列表:[[1,10],[2,3],[5,8],[4,7]], 返回3。
答案:
将时间单独取出来,并用一个标记标记其是start还是end,对所有时间按从小到大的顺序排序,如果是start则递增计数器,如果是end则递减计数器。
注意排序时,如果时间相同,而标记不同,则将标记为end的时间排在前面。
代码:
/**
* Definition of Interval:
* classs Interval {
* int start, end;
* Interval(int start, int end) {
* this->start = start;
* this->end = end;
* }
*/ #include <algorithm> using std::sort; class IntervalPoint
{
public:
int time;
int flag;//0表示start时间,1表示end时间
IntervalPoint(int t, int f)
{
time = t;
flag = f;
}
}; bool cmp(const IntervalPoint& a, const IntervalPoint& b)
{
if(a.time == b.time)
{
return b.flag < a.flag;
} return a.time < b.time;
} class Solution {
public:
/**
* @param intervals: An interval array
* @return: Count of airplanes are in the sky.
*/
int countOfAirplanes(vector<Interval> &airplanes) {
// write your code here
if(airplanes.empty())
{
return ;
} vector<IntervalPoint> points;
vector<Interval>::iterator beg;
for(beg = airplanes.begin(); beg != airplanes.end(); ++ beg)
{
points.push_back(IntervalPoint(beg->start,));
points.push_back(IntervalPoint(beg->end,));
} sort(points.begin(), points.end(), cmp); int ans = ;
int count = ;
vector<IntervalPoint>::iterator pointsBeg;
for(pointsBeg = points.begin(); pointsBeg != points.end(); ++ pointsBeg)
{
if(pointsBeg->flag == )
{
count ++;
}else
{
count --;
} ans = (ans > count ? ans : count);
} return ans;
}
};
lintcode-【中等】数飞机的更多相关文章
- lintcode:数飞机
数飞机 给出飞机的起飞和降落时间的列表,用 interval 序列表示. 请计算出天上同时最多有多少架飞机? 如果多架飞机降落和起飞在同一时刻,我们认为降落有优先权. 样例 对于每架飞机的起降时间列表 ...
- lintcode 中等题:find the missing number 寻找缺失的数
题目 寻找缺失的数 给出一个包含 0 .. N 中 N 个数的序列,找出0 .. N 中没有出现在序列中的那个数. 样例 N = 4 且序列为 [0, 1, 3] 时,缺失的数为2. 注意 可以改变序 ...
- lintcode 中等题:Single number III 落单的数III
题目 落单的数 III 给出2*n + 2个的数字,除其中两个数字之外其他每个数字均出现两次,找到这两个数字. 样例 给出 [1,2,2,3,4,4,5,3],返回 1和5 挑战 O(n)时间复杂度, ...
- lintcode 中等题:Singleton number II 落单的数 II
题目 落单的数 II 给出3*n + 1 个的数字,除其中一个数字之外其他每个数字均出现三次,找到这个数字. 样例 给出 [1,1,2,3,3,3,2,2,4,1] ,返回 4 挑战 一次遍历,常数级 ...
- lintcode 中等题:k Sum ii k数和 II
题目: k数和 II 给定n个不同的正整数,整数k(1<= k <= n)以及一个目标数字. 在这n个数里面找出K个数,使得这K个数的和等于目标数字,你需要找出所有满足要求的方案. 样例 ...
- lintcode 中等题:A + B Problem A + B 问题
题目: 中等 A + B 问题 给出两个整数a和b, 求他们的和, 但不能使用 + 等数学运算符. 如果 a=1 并且 b=2,返回3 注意 你不需要从输入流读入数据,只需要根据aplusb的两个参数 ...
- lintcode:快乐数
快乐数 写一个算法来判断一个数是不是"快乐数". 一个数是不是快乐是这么定义的:对于一个正整数,每一次将该数替换为他每个位置上的数字的平方和,然后重复这个过程直到这个数变为1,或是 ...
- lintcode 中等题:partition array 数组划分
题目 数组划分 给出一个整数数组nums和一个整数k.划分数组(即移动数组nums中的元素),使得: 所有小于k的元素移到左边 所有大于等于k的元素移到右边 返回数组划分的位置,即数组中第一个位置i, ...
- lintcode 中等题 :Maximum Product Subarray 最大连续乘积子序列
题目 乘积最大子序列 找出一个序列中乘积最大的连续子序列(至少包含一个数). 样例 比如, 序列 [2,3,-2,4] 中乘积最大的子序列为 [2,3] ,其乘积为6. 解题 法一:直接暴力求解 时 ...
随机推荐
- json体会
1.用json-lib的jar包,创建JsonObject的对象(其引用取名jo),JsonObject jo = new JsonObject(); 再创建一个jsonobject对象:JsonOb ...
- char*或string转换成LPCWSTR
VS2010默认是Unicode的,在VC 6.0中编译成功的项目在VS2010中常会出现类型错误. 经常出现的错误是:不能从const char *转换为LPCWSTR 如使用CreateDC(&q ...
- understanding Nhibernate Hilo
http://stackoverflow.com/questions/2738671/please-explain-nhibernate-hilo http://stackoverflow.com/q ...
- M3: 将页面元素制作为图片
本小节将介绍如何将页面元素保存为图片,在前一小节中,我们加入了名称为gridMsg的Grid Control,现在我们将使用RenderTargetBitmap把gridMsg这个页面元素保存为一张图 ...
- Java初学者入门应该掌握的30个概念
1.OOP中唯一关系的是对象的接口是什么,就像计算机的销售商她不管电源内部结构 是怎样的,他只关系能否给你提供电就行了,也就是只要知道can or not而不是how and why.所有的程序是由一 ...
- hdu4737 A Bit Fun
link:http://acm.hdu.edu.cn/showproblem.php?pid=4737 暴力可以过啊.O(N^2)的复杂度. #include <cstdio> ]; in ...
- ooize节点的属性控制
<workflow-app name="[WF-DEF-NAME]" xmlns="uri:oozie:workflow:[version]"> & ...
- POJ 1990 MooFest(树状数组)
MooFest Time Limit: 1000MS Mem ...
- 集群中配置多台计算机之间ssh无密码登录的一种简便方法
当我们在配置多台计算,使之可以相互使用无密码登录-ssh,之前都是一台一台的配置,现在一台A上添加B,然后在另一台B上再次添加A,这样使得 authorized_keys中的内容相同,但时并不是完全相 ...
- SQL Server Profiler工具
一.SQL Profiler工具简介 SQL Profiler是一个图形界面和一组系统存储过程,其作用如下: 图形化监视SQL Server查询: 在后台收集查询信息: 分析性能: 诊断像死锁之类的问 ...