当前位置: 首页 > news >正文

贪心算法-会议室问题

1、题目描述
一些项目要占用一个会议室宣讲,会议室不能同时容纳两个项目。现在给你两个长度一样的数组,starts数组代码每个会议开始的时间,ends数组代表每个会议结束的时间。
在给你一个当前时间,请你求出当日可以利用会议室宣讲的最大值

思路分析:
1.按照最早开始的会议排序,最早开始的优先。
2.按照最短时间排序,时间最短的优先。
3.按照最早结束排序,最早结束的优先。
贪心算法是纯粹的积累经验类型的算法思想,贪心策略的正确性证明是非常困难的,几乎不可能证明正确性,因此,只能通过对数器进行验证。同时,可以举反例排除错误的贪心策略。
比如上面的:
1.如果最早开始的会议时间是最长呢?直接怼一天的话,显然不合理对吧?
2.如果最短的会议在中间呢?导致它前面的时间浪费了,后面的时间可能正好差一点不够一个会议,这样也很浪费,肯定不是最优解。
因此,排除掉1和2,此题的最优贪心算法应该就是3。

解题思路:
是按照项目完成时间,从前到后排序,先做最早结束的项目,然后淘汰掉不能再做的项目

public static class Program {public int start;public int end;public Program(int start, int end) {this.start = start;this.end = end;}
}
// 会议的开始时间和结束时间,都是数值,不会 < 0
public static int bestArrange2(Program[] programs) {Arrays.sort(programs, new ProgramComparator());int timeLine = 0;int result = 0;// 依次遍历每一个会议,结束时间早的会议先遍历for (int i = 0; i < programs.length; i++) {if (timeLine <= programs[i].start) {result++;timeLine = programs[i].end;}}return result;
}public static class ProgramComparator implements Comparator<Program> {@Overridepublic int compare(Program o1, Program o2) {return o1.end - o2.end;}}
http://www.lryc.cn/news/175669.html

相关文章:

  • 单日 5000 亿行 / 900G 数据接入,TDengine 3.0 在中国地震台网中心的大型应用
  • 【VIM系列】cscope命令
  • Vue的自定义事件(Custom Events):实现组件间通信的强大工具
  • 简易实现通讯录(1.0)
  • CSS笔记——触发式动画Transition、主动式动画Animation、Transfrom 动画、CSS 3D 动画、阴影和滤镜样式
  • 软件测试之Web安全测试详解
  • MYSQL binlog
  • Web 基础概念
  • 谈谈最近招人的感受!
  • 【日常业务开发】Java调用第三方http接口的常用方式
  • 【大数据开发技术】实验04-HDFS文件创建与写入
  • 中国制造让苹果跪服,将再增加一家中国高科技供应商
  • 港卡开户感想(2023-8)
  • 机器学习第十一课--K-Means聚类
  • Java on Azure Tooling 8月更新|以应用程序为中心的视图支持及 Azure 应用服务部署状态改进
  • 论文笔记:ST2Vec: Spatio-Temporal Trajectory SimilarityLearning in Road Networks
  • upload-labs靶场未知后缀名解析漏洞
  • VisualStudio配置opencv
  • 如何通过git指令加入管理者仓库并提交分支(Github Gitee)
  • LuatOS-SOC接口文档(air780E)-- fastlz - FastLZ压缩
  • MySQL表的增删改查(进阶)
  • Greenplum实用工具-gpfdist
  • axios和fetch的区别
  • HTML那些重要的知识点
  • 《优化接口设计的思路》系列:第四篇—接口的权限控制
  • BI系统上的报表怎么导出来?附方法步骤
  • 电脑WIFI突然消失
  • http的get与post
  • MySQL 8 和 MySQL 5.7 在自增计数上的区别
  • Linux系统之links和elinks命令的基本使用