力扣1845——座位预约管理系统(优先队列)
题目(中等)
请你设计一个管理 n 个座位预约的系统,座位编号从 1 到 n 。
请你实现 SeatManager 类:
SeatManager(int n) 初始化一个 SeatManager 对象,它管理从 1 到 n 编号的 n 个座位。所有座位初始都是可预约的。
int reserve() 返回可以预约座位的 最小编号 ,此座位变为不可预约。
void unreserve(int seatNumber) 将给定编号 seatNumber 对应的座位变成可以预约。
示例 1:
输入:
[“SeatManager”, “reserve”, “reserve”, “unreserve”, “reserve”, “reserve”, “reserve”, “reserve”, “unreserve”]
[[5], [], [], [2], [], [], [], [], [5]]
输出:
[null, 1, 2, null, 2, 3, 4, 5, null]
解释:
SeatManager seatManager = new SeatManager(5); // 初始化 SeatManager ,有 5 个座位。
seatManager.reserve(); // 所有座位都可以预约,所以返回最小编号的座位,也就是 1 。
seatManager.reserve(); // 可以预约的座位为 [2,3,4,5] ,返回最小编号的座位,也就是 2 。
seatManager.unreserve(2); // 将座位 2 变为可以预约,现在可预约的座位为 [2,3,4,5] 。
seatManager.reserve(); // 可以预约的座位为 [2,3,4,5] ,返回最小编号的座位,也就是 2 。
seatManager.reserve(); // 可以预约的座位为 [3,4,5] ,返回最小编号的座位,也就是 3 。
seatManager.reserve(); // 可以预约的座位为 [4,5] ,返回最小编号的座位,也就是 4 。
seatManager.reserve(); // 唯一可以预约的是座位 5 ,所以返回 5 。
seatManager.unreserve(5); // 将座位 5 变为可以预约,现在可预约的座位为 [5] 。
提示:
1 <= n <= 10^5
1 <= seatNumber <= n
每一次对 reserve 的调用,题目保证至少存在一个可以预约的座位。
每一次对 unreserve 的调用,题目保证 seatNumber 在调用函数前都是被预约状态。
对 reserve 和 unreserve 的调用 总共 不超过 10^5 次。
解题思路
用一点贪心的思想,用pos记录上次分配的座位编号,每次释放的座位一定小于pos,也就是一定在已分配的座位里,
所以按分配规则一定先给释放出的那些座位;
用优先队列,也就是小顶堆记录释放的座位,如果没有空着的释放座位,那分配往后移pos,否则从小顶堆里输出堆顶。
代码
class SeatManager {public:priority_queue<int, vector<int>, greater<int> > relase;int pos = 0;SeatManager(int n) {}int reserve() {if(relase.empty()) {pos++;return pos;}else {int ans = relase.top();relase.pop();return ans;}}void unreserve(int seatNumber) {relase.push(seatNumber);}
};
力扣1845——座位预约管理系统(优先队列)相关推荐
- LeetCode 1845. 座位预约管理系统(set)
文章目录 1. 题目 2. 解题 1. 题目 请你设计一个管理 n 个座位预约的系统,座位编号从 1 到 n . 请你实现 SeatManager 类: SeatManager(int n) 初始化一 ...
- 基于javaweb的自习室图书馆座位预约管理系统(java+ssm+jsp+easyui+mysql)
基于javaweb的自习室图书馆座位预约管理系统(java+ssm+jsp+easyui+mysql) 运行环境 Java≥8.MySQL≥5.7.Tomcat≥8 开发工具 eclipse/idea ...
- Java计算机毕业设计图书馆座位预约管理系统源码+系统+数据库+lw文档
Java计算机毕业设计图书馆座位预约管理系统源码+系统+数据库+lw文档 Java计算机毕业设计图书馆座位预约管理系统源码+系统+数据库+lw文档 本源码技术栈: 项目架构:B/S架构 开发语言:Ja ...
- 基于SSM的图书馆座位预约管理系统
1,本系统主要采取java语言的SSM框架为主要开发技术,并使用了一些div+css语言来实现图书馆座位预约系统前端页面的布局,前端的整体布局以电影院定位为参看模板设计,查看方便,操作简单.为了高效, ...
- 基于JAVA图书馆座位预约管理系统计算机毕业设计源码+数据库+lw文档+系统+部署
基于JAVA图书馆座位预约管理系统计算机毕业设计源码+数据库+lw文档+系统+部署 基于JAVA图书馆座位预约管理系统计算机毕业设计源码+数据库+lw文档+系统+部署 本源码技术栈: 项目架构:B/S ...
- 2022基于微信小程序的图书馆座位预约管理系统.rar(论文+程序设计源码+数据库)毕业设计
随着时代不断的发展,我们对于知识的汲取需要从不同领域了解,从而扩大自己的知识面,图书馆作为大学生学习的宝地,有着不可替代的地位.但是在互联网信息化时代,传统模式下的图书馆管理模式,并不能满足校园学生需 ...
- 基于jsp+mysql+Spring+mybatis的SSM图书馆座位预约管理系统文末附下载地址
运行环境: 最好是java jdk 1.8,我们在这个平台上运行的.其他版本理论上也可以. IDE环境: Eclipse,Myeclipse,IDEA都可以 tomcat环境: Tomcat 7.x, ...
- 基于SSM的图书馆座位预约管理系统占座系统-java图书馆座位预约管理系统占座系统...
基于SSM的图书馆座位预约管理系统占座系统-java图书馆座位预约管理系统占座系统 1.包含源程序,数据库脚本.代码和数据库脚本都有详细注释. 2.课题设计仅供参考学习使用,可以在此基础上进行扩展完善 ...
- 【JAVA程序设计】(C00067)基于SSM(非maven)图书馆座位预约管理系统
基于SSM(非maven)图书馆座位预约管理系统 项目简介 项目获取 开发环境 项目技术 运行截图 项目简介 基于ssm框架非maven开发的图书馆预约占座管理系统共分为三个角色:系统管理员.教师.学 ...
最新文章
- 两个CSS样式生成网站
- matlab理想低通滤波器代码_自己动手,解开Matlab下AMD锐龙处理器性能封印
- 创建ROS消息和服务---ROS学习第8篇
- mysql 存储过程 输出table_mysql 存储过程 没有结果输出。
- B站在美上市 A站却为融资心塞
- 人工智能学c语言还是python-python深入学习好还是直接学人工智能好?
- java框架快速使用mysql_阿里java架构师教你怎么用mysql怒怼面试官
- java sigar 远程_Java运用第三方开源jar包sigar.jar获取服务器信息
- 视觉SLAM十四讲学习记录 第三讲
- [转帖]历史上真实的《勇敢的心》
- 01_CSS简介.html
- python3 的 md5加密
- linux day03 基础知识学习
- 第四讲:1.定时、延时任务控制小台灯打开/关闭
- SDWAN-viptela设备上线配置
- 众多场景已经全面普及智能取餐柜
- K-means原理、优化及应用
- JAVA 图片地址路径转换 Base64 工具类
- vue 常用ui组件库
- JDBC四:操作Blob类型字段