问题:

有一堆会议,每个会议都有开始时间和结束时间,问至少需要几个房间可以安排下这些会议?

解决思路:
这是个贪心类问题, 每个会议都有结束时间和开始时间,可以对两个时间分开存储并排序,从最先开始的会议开始遍历,只要当前会议的开始时间小于结束时间数组中的第一个结束时间,就需要重新开辟一个房间。接着看下一个会议的开始时间,如果开始时间依旧小于结束时间,那么还需要一个房间用作这个会议,如果开始时间大于等于结束时间,说明这个会议开始的时候,前面的会议中至少有一个已经结束了,此时不需要重新开辟一个新房间,复用即可,同时因为上一个结束时间已经过去了,所以结束时间数组下标指向下一个结束时间。

代码流程:

  1. 开始时间、结束时间分开排序;
  2. 从头开始遍历开始时间数组,如果当前开始时间小于结束时间,房间数 + 1, 开始时间下标向前移动,结束时间下标不动;
  3. 如果结束时间大于等于结束时间,开始时间向前移动,同时结束时间下标向前移动,房间数不变;

python 代码:

def meetingRoom(arr):start_time = []end_time = []for time in arr:start_time.append(time[0])end_time.append(time[1])start_time = sorted(start_time)end_time = sorted(end_time)res = 0j = 0for i in range(len(start_time)):if start_time[i] < end_time[j]:res += 1else:j += 1return res

解法二:
也可以使用小跟堆来做,但时间复杂度都一样,O(NlogN),具体思路也是将起始时间排序,然后遍历时间时,将每个结束时间压入堆中, 如果当前开始时间小于等于小跟堆的堆顶结束时间,从堆顶弹出一个元素,表示有一个会议室已经结束使用,可以复用该会议室。最后堆中剩下的元素个数就是所需的房间数。

贪心算法---会议室问题相关推荐

  1. 会议室日程安排问题(python贪心算法)

    会议室日程安排问题(最少需要多少个会议室) 按照贪心算法,此问题可以得到最优解!原来是按结束时间排序,但这样的话并不是最少的会议室数(下面有反例)而要得到最少的会议室数,需要将议程时间按开始时间排序. ...

  2. 贪心算法解决跳马问题_算法浅谈——怪盗基德的珠宝选择问题与贪心算法

    点击上方蓝字,和我一起学技术.   1   在开始今天的文章之前,我们先来讲一个故事: 在一个月黑风高的夜晚,怪盗基德潜入了一个著名的珠宝会馆.他面前有三个装着珠宝的柜子,这三个规则分别是A.B和C. ...

  3. 贪心算法求解问题的选择准则

    贪心不贪心,是设计者说了算,也就是说,什么情况下是贪心的选择,什么情况下不是贪心的选择,由设计者自己定义.比如公交线路的选择,最优可以指定为,1. 时间最短,也可以是,2. 最少换乘: 1. 活动选择 ...

  4. 贪心算法(Java版本)

    一.贪心算法 1.算法描述 贪心算法(Greedy algorithm),又叫做贪婪算法. 在对问题求解时,不从整体考虑,而是从问题的某一个初始解出发,每一步选择中都采取在当前状态下最好或最优的选择( ...

  5. 2022-4-11 Leetcode 435.无重叠区间 —— 【贪心算法】

    第一版,我本来打算是按照会议室的方式写的.每个房间放入连续的数组下标的序号.后来发现可能会出现同一个数组能够放入多个房间里,所以需要在每一轮开始前对房间进行排序. 本来自信慢慢的觉得自己能过,但是发现 ...

  6. 算法补天系列之——前缀树+贪心算法

    介绍前缀树 经典的前缀树,字符都是在路上的,节点是为了边的存在而存在的,有路就可以复用. 那么前缀树对应的数据结构是什么样的呢? 对于节点构建结构,设置一个int pass(表示路径途径这个节点的次数 ...

  7. 算法设计与分析第3章 贪心算法

    第4章 贪心算法 贪心算法总是作出在当前看来最好的选择.也就是说贪心算法并不从整体最优考虑,它所作出的选择只是在某种意义上的局部最优选择. 贪心算法的基本要素 1.贪心选择性质 所谓贪心选择性质是指所 ...

  8. 贪心算法单源点最短路径例题c语言源代码,Dijkstra算法是解单源最短路径问题的一个贪心算法...

    问题描述 给定一个带权有向图 G=(V,E) ,其中每条边的权是一个非负实数. 另外,还给定 V 中的一个项点,称为源. 现在我们要计算从源到所有其他各项点的最短路径长度. 这里的长度是指路上各边权之 ...

  9. 贪心算法简单实践 -- 分糖果、钱币找零、最多区间覆盖、哈夫曼编解码

    1. 贪心算法概览 贪心算法是一种算法思想.希望能够满足限制的情况下将期望值最大化.比如:Huffman编码,Dijkstra单源最短路径问题,Kruskal最小生成树 等问题都希望满足限制的情况下用 ...

最新文章

  1. 大话中文文本分类之textCNN
  2. php parseurl的反函数,字符串修改(处理)函数
  3. %r或者{!r}在python中的意思
  4. C#曲线分析平台的制作(四,highcharts+ajax加载后台数据)
  5. 如何设置单词第一个字母大写_大写一行中每个单词的第一个和最后一个字母
  6. Windows Vista for Developers——第二部分:深入分析任务对话框
  7. UiAutomator控件获取
  8. linux怎么安装ros系统,ubuntu14.04安装ROS indigo的详细图解步骤
  9. 如何在 iPhone 和 iPad 上快速找到合适照片?
  10. 北理工c语言作业 2048,C语言实现2048小游戏
  11. 4.6 TF常用功能模块
  12. 网络定位服务NetworkLocationProvider
  13. JMeter-配置元件-HTTP授权管理器
  14. HTML 编辑器-网页制作是用什么来做的?-2
  15. 卡耐基沟通成功学—戴尔·卡耐基
  16. oracle rac evict,OEL6.3上 Oracle RAC 上节点驱逐检查过程
  17. 推荐几个有特点的公众号给你
  18. C++ swap用法
  19. org.hibernate.MappingException: Unknown entity: com.yyw.bean.Post几种可能
  20. 4G智能音箱技术方案开发

热门文章

  1. 为何我们要用 React 来写小程序 - Taro 诞生记
  2. 汽车电子行业入门指南「汽车行业的英语要求与学习方法」
  3. 5GNR漫谈2:同步和广播信道(PSS/SSS/PBCH,SSB)
  4. 【Linux驱动】input子系统与按键驱动
  5. 案例:图书管理(包括图书列表展示,添加、修改、删除图书功能)
  6. Seq2Seq模型实现(Decoder部分)
  7. android 屏幕取词 像有道,有道词典更新 Android版推出扩充词库 桌面版支持Firefox5取词...
  8. Spring Boot项目邮箱验证码功能的实现(以QQ邮箱为例)
  9. EtherCAT从站代码配置
  10. 品牌误读了NFT营销?