2022-3-30 Leetcode253.会议室II
我的解决方案
1)给会议开始的时间排序
2)使用二维数组来模拟会议室的分配情况。其中的每个数组都放置了在这个会议室开会的数组下标
3)从每个数组当中读出一维数组的最后一个数字,表示最后使用这个会议室的会议结束时间。看一下,哪一场会议在本次会议开始前结束。
4)如果没有就另外开辟一个会议室使用
class Solution {public:int minMeetingRooms(vector<vector<int>>& intervals) {sort(intervals.begin(),intervals.end());vector<vector<int>> index;index.push_back({0});for(int i = 1;i < intervals.size();i++){bool add = false;for(auto& vec: index){int j = vec.back();if(intervals[i][0] >= intervals[j][1]){vec.push_back(i);add = true;break;}}if(!add){index.push_back({i});}}return index.size();}
};
第二种方法:使用优先队列
堆的每个点用来存放每场活动的结束时间,最顶端便是最先结束的活动。
如果最先结束的活动比当前活动的开始时间要早,就用当前的活动去替换;如果最先结束的活动结束的时间比当前活动开始得要晚,就将当前活动的结束时间插入到堆当中。
最后最少使用的会场的数量即为堆的大小。
priority_queue<int,vector<int>,greater<int>> q;sort(nums.begin(),nums.end());for(auto& i:nums){if(q.empty() || q.top() > i[0]){q.emplace(i[1]);}else {q.pop();q.emplace(i[1]);}}cout <<"最小的会场数为:" << endl;cout << q.size() << endl;
下面都是错误的版本
第一版,没有考虑到这种情况
class Solution {public:int minMeetingRooms(vector<vector<int>>& intervals) {sort(intervals.begin(),intervals.end());int cnt = 1;for(int i = 0;i < intervals.size()-1;i++){if(intervals[i][0] <= intervals[i+1][0] && intervals[i][1] >= intervals[i+1][1]){cnt++;}}return cnt;}
};
第二版,没有考虑到下图这种情况
class Solution {public:int minMeetingRooms(vector<vector<int>>& intervals) {sort(intervals.begin(),intervals.end());int cnt = 1;for(int i = 0;i < intervals.size()-1;i++){if(intervals[i][1] <= intervals[i+1][0]){}else cnt++;}return cnt;}
};
第三版,不知道为啥忽略了这种情况
aaa其实思路是没有错的,写错了一个字母
class Solution {public:int minMeetingRooms(vector<vector<int>>& intervals) {sort(intervals.begin(),intervals.end());vector<vector<int>> index;index.push_back({0});for(int i = 1;i < intervals.size();i++){bool add = false;for(auto& vec: index){int j = vec.back();if(intervals[i][0] >= intervals[j][1]){vec.push_back(j);add = true;break;}}if(!add){index.push_back({i});}}return index.size();}
};
2022-3-30 Leetcode253.会议室II相关推荐
- leetcode253. 会议室 II
给定一个会议时间安排的数组,每个会议时间都会包括开始和结束的时间 [[s1,e1],[s2,e2],...] (si < ei),为避免会议冲突,同时要考虑充分利用会议室资源,请你计算至少需要多 ...
- LeetCode 会议室 II
会议室 II 给定一个会议时间安排的数组,每个会议时间都会包括开始和结束的时间 [[s1,e1],[s2,e2],-] (si < ei),为避免会议冲突,同时要考虑充分利用会议室资源,请你计算 ...
- 2022.4.30—2022.6.22 学习报告
目录 2022.4.30 2022.5.2 数据流图(Dataflow Graph) Sesssion 构建计算图 2022.5.3 Deep Label Distribution Learning ...
- Tue Jun 28 2022 15:30:29 GMT+0800 (中国标准时间) 日期格式化
1. Tue Jun 28 2022 15:30:29 GMT+0800 (中国标准时间) 转换为 2022-06-28 15:30:29 代码如下 const d = new Date(Tue Ju ...
- 2022/5/30 Mybatis-Plus详解
目录 1.Mybatis-Plus简介 2.特性 3.支持数据库 4.框架结构 5.快速开始 5.1 创建数据库mybatis_plus 5.2 搭建项目 5.2.1 创建Spring Boot工程 ...
- 【SRE笔记 2022.9.30 集群知识及Centos基础优化】
SRE笔记 2022.9.30 集群内服务软件 集群模板机创建 Linux系统优化 用户优化 ssh远程连接效率提升 配置yum源 常用软件安装 安全优化 中文字符集(非必要) 时间同步 提升命令行安 ...
- 每日一练 — 2022.01.30
文章目录 一,买卖股票的最佳时机 II 1,程序简介 注意: 示例 1: 示例 2: 示例 3: 提示: 2,程序代码 3,运行结果 二,分数到小数 1,程序简介 示例 1: 示例 2: 示例 3: ...
- LeetCode 253. 会议室 II(贪心+优先队列)
文章目录 1. 题目 2. 解题 1. 题目 给定一个会议时间安排的数组,每个会议时间都会包括开始和结束的时间 [[s1,e1],[s2,e2],-] (si < ei), 为避免会议冲突,同时 ...
- LeetCode-预约会议室II
一.题目 给定一个会议时间安排的数组,每个会议时间都会包括开始和结束的时间 [[s1,e1],[s2,e2],-] (si < ei),请你判断一个人是否能够参加这里面的全部会议. 示例 1: ...
最新文章
- python前缀表达式求值_python数据结构与算法 11 后缀表达式求值
- aserisk笔记(dahdi工具相关)
- eclipse无法运行 ,报错:the selection cannot be launched
- 获取mongodb数据变更_支持mysql、MongoDB数据变更订阅/监听分发
- 经典逻辑编程题(本文用python实现)
- python excel 添加数据_使用pyexcel python在电子表格中添加行数据
- Java程序员不可错过的11个IDEA插件
- Python+matplotlib响应鼠标滚轮事件调整图形大小
- Pandas高级操作
- Cuda-convnet配置指南 on Windows8.1+CUDA6.5+VS2013
- 计算机科学概论读书报告,计算机科学导论读书笔记01:绪论
- linux常用命令大全,入门基础版
- MACOS系统安装pip
- 文件分配方式-索引分配
- 《1024伐木累》-小白篇之丽姐(前篇)-总章节四
- Ubuntu18.04安装Adobe flash player
- 【杂烩】Tesla M40 24G 在Win11上的双显卡显示实现、改风冷
- MNIST手写数字识别之MLP实现
- 网页版数据库管理工具安装教程——phpAdmin
- DNSPod十问袁志远:智慧园区,被严重低估的To B赛道?
热门文章
- cadence中电路图的黑色背景与白色背景的切换
- make makefile cmake qmake都是什么,有什么区别?
- 管理是什么——浅谈开发经理的管理
- android 360加固远离,安卓党小心账户被克隆!360加固保为开发者提供修复建议
- 如何进行简单的功能仿制(网页制作)
- 富文本编辑:wangEditor使用教程
- 支付宝智慧食堂解决方案
- STPA安全性分析方法
- Redis大key问题与scan命令
- org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'entityManage