题目如下:

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)相关推荐

  1. 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 ...

  2. LintCode 764. 计算圆周长和面积 Java算法

    描述 给定半径r,返回圆的周长nums[0]和面积nums[1].结果保留了两位小数. 说明 PI = 3.14 样例 - 样例 1:输入 : r = 2 输出 : [12.56, 12.56] 解析 ...

  3. lintcode 算法题 2316 · 判断三角形(Java 版)

    题目: 给定三个整数 a.b.c 代表三角形的三条边长,判断这三条边是否能组成一个三角形,当判断为是时,请通过 System.out.println 语句输出 Is a triangle,当判断为否时 ...

  4. 扫描线Sweep Line算法总结

    扫描线算法,推荐还是用标准的模板去写,treemap只适合于求最大的overlap个数的题目,其余的不能用treemap来解,所以推荐还是用event的思想去+1, -1然后排序扫描的方法可以用来解所 ...

  5. hdu 2097 Java Sky数

    点击打开链接 Sky数 Time Limit: 1000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Tota ...

  6. Sky number

    Sky number 时间限制:1000 ms  |  内存限制:65535 KB 难度:1 描述 key天生对数字特别敏感,一次偶然的机会,他发现了一个有趣的四位数2992,这个数,它的十进制数表示 ...

  7. java number 转 long_Java Number.longValue()用法及代码示例

    java.lang.Number.longValue()是java中的一个内置方法,该方法返回转换为long数据类型的指定数字的值.这可能涉及舍入或截断. 用法: public abstract lo ...

  8. java magic number_java的class文件的magic number, cafebabe

    java的class文件的前4个字节叫做magic number, 用来识别是否为java的class文件. package pkg; import java.io.File; import java ...

  9. HDU2097 Sky数【进制】

    Sky数 Time Limit: 1000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total Submi ...

最新文章

  1. 计算机无法安装win10,win10系统电脑提示“windows安装无法继续”的还原步骤
  2. 【错误记录】前台进程报错 ( Bad notification for startForeground invalid channel for service notification )
  3. 小游戏专场:腾讯云Game-Tech技术沙龙上海站顺利落下帷幕
  4. 库函数设计:关于文件类打开操作函数不自动创建不存在的父目录问题
  5. OpenCASCADE:可视化之基础概念
  6. mysql myisam 去掉表锁a_MyISAM表锁的解决方案
  7. dbscan算法python实现_挑子学习笔记:DBSCAN算法的python实现
  8. Mybatis-plus 大数据量数据流式查询通用接口
  9. python基础入门(2)
  10. 工程经济作业1答案_2015年一级建造师铁路工程真题及答案1
  11. 边缘计算 VS 云计算,谁才是未来?
  12. 【5分钟paper】基于近似动态规划的学习、规划和反应的集成架构
  13. 概率论与数理统计 习题篇
  14. 【转载】C# WinForm程序中使用Unity3D控件
  15. 使用Sencha cmd安装extjs6
  16. 目标转化出价多少_浅谈什么是 oCPC 目标转化出价?
  17. 【LSTM分类】基于双向长短时记忆(BiLSTM)实现数据分类含Matlab源码
  18. echarts饼图中间默认内容显示与data数据显示切换
  19. 抖音修改so实现抓包功能
  20. Word中endnote选项无效,怎么处理?

热门文章

  1. 分布式锁 - Redisson的看门狗(watchdog)机制
  2. kali上的一些密码破解工具
  3. SVM的“三重境界”
  4. Windows10安装MG2580打印机
  5. Unity时光倒流效果实现
  6. 揭开自然拼读法(Phonics)的神秘面纱
  7. python ldap3获取所有用户信息_Python使用Ldap3进行Windows AD域管理
  8. PAT 乙级 1044  火星数字
  9. 押三中三,元气森林赢麻了 论元气森林如何成为冬奥会最大赢家?
  10. go区块链培训学习:密码学算法家族