LintCode Number of Airplanes in the Sky(Java)
题目如下:
Given an interval list which are flying and landing time of the flight. How many airplanes are on the sky at most?
Have you met this question in a real interview? Yes
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 should happen at first.
分析如下:
见到网上一些基于interval排序的做法,我觉得这道题还可以用HashMap来做,这样空间换时间,降低了时间复杂度。
首先,每个x对应HashMap的key, 比如在Interval (1, 5)这段有飞机飞过,那么说明在时间点为(1, 2, 3, 4, 5)的时候,各有一架飞机在空中,也就是说HashMap中可以存入(key, value)分别为(1, 1,), (2, 1,), (3, 1,), (4, 1,), (5, 1,)的 (key, value) pair。
其次,注意到题目说的,If landing and flying happens at the same time, we consider landing should happen at first.也就是说,interval(1, 5)这段和interval (5, 9)这段如果都有飞机飞过,在5这个点上,依然只能算作只有个一个飞机飞过。所以上面的(key, value) pari要修正一下。之前是把[interva.start, interval.end]的左闭右闭区间中的所有点放入HashMap,现在考虑到landing这个条件,应该只把[interva.start, interval.end)的左闭右开区间的所有点放入HashMap.
我的代码:
class Solution {/*** @param intervals: An interval array* @return: Count of airplanes are in the sky.*/public int countOfAirplanes(List<Interval> airplanes) { // write your code hereint max = 0;HashMap<Integer, Integer> hashMap = new HashMap<Integer, Integer>();if (airplanes == null || airplanes.size() == 0) {return 0;}for (Interval interval: airplanes) {for (int i = interval.start; i < interval.end; ++i) {if (hashMap.containsKey(i)) {hashMap.put(i, hashMap.get(i) + 1);} else {hashMap.put(i, 1);}max = Math.max(hashMap.get(i), max);}}return max;}
}
补充说明:
网上搜到一些基于排序的做法也挺容易懂的,比如这里 https://codesolutiony.wordpress.com/2015/05/12/lintcode-number-of-airplanes-in-the-sky/
LintCode Number of Airplanes in the Sky(Java)相关推荐
- lintcdoe: Number of Airplanes in the Sky
Number of Airplanes in the Sky 30:00 Given an interval list which are flying and landing time of the ...
- LintCode 764. 计算圆周长和面积 Java算法
描述 给定半径r,返回圆的周长nums[0]和面积nums[1].结果保留了两位小数. 说明 PI = 3.14 样例 - 样例 1:输入 : r = 2 输出 : [12.56, 12.56] 解析 ...
- lintcode 算法题 2316 · 判断三角形(Java 版)
题目: 给定三个整数 a.b.c 代表三角形的三条边长,判断这三条边是否能组成一个三角形,当判断为是时,请通过 System.out.println 语句输出 Is a triangle,当判断为否时 ...
- 扫描线Sweep Line算法总结
扫描线算法,推荐还是用标准的模板去写,treemap只适合于求最大的overlap个数的题目,其余的不能用treemap来解,所以推荐还是用event的思想去+1, -1然后排序扫描的方法可以用来解所 ...
- hdu 2097 Java Sky数
点击打开链接 Sky数 Time Limit: 1000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Tota ...
- Sky number
Sky number 时间限制:1000 ms | 内存限制:65535 KB 难度:1 描述 key天生对数字特别敏感,一次偶然的机会,他发现了一个有趣的四位数2992,这个数,它的十进制数表示 ...
- java number 转 long_Java Number.longValue()用法及代码示例
java.lang.Number.longValue()是java中的一个内置方法,该方法返回转换为long数据类型的指定数字的值.这可能涉及舍入或截断. 用法: public abstract lo ...
- java magic number_java的class文件的magic number, cafebabe
java的class文件的前4个字节叫做magic number, 用来识别是否为java的class文件. package pkg; import java.io.File; import java ...
- HDU2097 Sky数【进制】
Sky数 Time Limit: 1000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Total Submi ...
最新文章
- 计算机无法安装win10,win10系统电脑提示“windows安装无法继续”的还原步骤
- 【错误记录】前台进程报错 ( Bad notification for startForeground invalid channel for service notification )
- 小游戏专场:腾讯云Game-Tech技术沙龙上海站顺利落下帷幕
- 库函数设计:关于文件类打开操作函数不自动创建不存在的父目录问题
- OpenCASCADE:可视化之基础概念
- mysql myisam 去掉表锁a_MyISAM表锁的解决方案
- dbscan算法python实现_挑子学习笔记:DBSCAN算法的python实现
- Mybatis-plus 大数据量数据流式查询通用接口
- python基础入门(2)
- 工程经济作业1答案_2015年一级建造师铁路工程真题及答案1
- 边缘计算 VS 云计算,谁才是未来?
- 【5分钟paper】基于近似动态规划的学习、规划和反应的集成架构
- 概率论与数理统计 习题篇
- 【转载】C# WinForm程序中使用Unity3D控件
- 使用Sencha cmd安装extjs6
- 目标转化出价多少_浅谈什么是 oCPC 目标转化出价?
- 【LSTM分类】基于双向长短时记忆(BiLSTM)实现数据分类含Matlab源码
- echarts饼图中间默认内容显示与data数据显示切换
- 抖音修改so实现抓包功能
- Word中endnote选项无效,怎么处理?