题目(中等)

请你设计一个管理 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——座位预约管理系统(优先队列)相关推荐

  1. LeetCode 1845. 座位预约管理系统(set)

    文章目录 1. 题目 2. 解题 1. 题目 请你设计一个管理 n 个座位预约的系统,座位编号从 1 到 n . 请你实现 SeatManager 类: SeatManager(int n) 初始化一 ...

  2. 基于javaweb的自习室图书馆座位预约管理系统(java+ssm+jsp+easyui+mysql)

    基于javaweb的自习室图书馆座位预约管理系统(java+ssm+jsp+easyui+mysql) 运行环境 Java≥8.MySQL≥5.7.Tomcat≥8 开发工具 eclipse/idea ...

  3. Java计算机毕业设计图书馆座位预约管理系统源码+系统+数据库+lw文档

    Java计算机毕业设计图书馆座位预约管理系统源码+系统+数据库+lw文档 Java计算机毕业设计图书馆座位预约管理系统源码+系统+数据库+lw文档 本源码技术栈: 项目架构:B/S架构 开发语言:Ja ...

  4. 基于SSM的图书馆座位预约管理系统

    1,本系统主要采取java语言的SSM框架为主要开发技术,并使用了一些div+css语言来实现图书馆座位预约系统前端页面的布局,前端的整体布局以电影院定位为参看模板设计,查看方便,操作简单.为了高效, ...

  5. 基于JAVA图书馆座位预约管理系统计算机毕业设计源码+数据库+lw文档+系统+部署

    基于JAVA图书馆座位预约管理系统计算机毕业设计源码+数据库+lw文档+系统+部署 基于JAVA图书馆座位预约管理系统计算机毕业设计源码+数据库+lw文档+系统+部署 本源码技术栈: 项目架构:B/S ...

  6. 2022基于微信小程序的图书馆座位预约管理系统.rar(论文+程序设计源码+数据库)毕业设计

    随着时代不断的发展,我们对于知识的汲取需要从不同领域了解,从而扩大自己的知识面,图书馆作为大学生学习的宝地,有着不可替代的地位.但是在互联网信息化时代,传统模式下的图书馆管理模式,并不能满足校园学生需 ...

  7. 基于jsp+mysql+Spring+mybatis的SSM图书馆座位预约管理系统文末附下载地址

    运行环境: 最好是java jdk 1.8,我们在这个平台上运行的.其他版本理论上也可以. IDE环境: Eclipse,Myeclipse,IDEA都可以 tomcat环境: Tomcat 7.x, ...

  8. 基于SSM的图书馆座位预约管理系统占座系统-java图书馆座位预约管理系统占座系统...

    基于SSM的图书馆座位预约管理系统占座系统-java图书馆座位预约管理系统占座系统 1.包含源程序,数据库脚本.代码和数据库脚本都有详细注释. 2.课题设计仅供参考学习使用,可以在此基础上进行扩展完善 ...

  9. 【JAVA程序设计】(C00067)基于SSM(非maven)图书馆座位预约管理系统

    基于SSM(非maven)图书馆座位预约管理系统 项目简介 项目获取 开发环境 项目技术 运行截图 项目简介 基于ssm框架非maven开发的图书馆预约占座管理系统共分为三个角色:系统管理员.教师.学 ...

最新文章

  1. 两个CSS样式生成网站
  2. matlab理想低通滤波器代码_自己动手,解开Matlab下AMD锐龙处理器性能封印
  3. 创建ROS消息和服务---ROS学习第8篇
  4. mysql 存储过程 输出table_mysql 存储过程 没有结果输出。
  5. B站在美上市 A站却为融资心塞
  6. 人工智能学c语言还是python-python深入学习好还是直接学人工智能好?
  7. java框架快速使用mysql_阿里java架构师教你怎么用mysql怒怼面试官
  8. java sigar 远程_Java运用第三方开源jar包sigar.jar获取服务器信息
  9. 视觉SLAM十四讲学习记录 第三讲
  10. [转帖]历史上真实的《勇敢的心》
  11. 01_CSS简介.html
  12. python3 的 md5加密
  13. linux day03 基础知识学习
  14. 第四讲:1.定时、延时任务控制小台灯打开/关闭
  15. SDWAN-viptela设备上线配置
  16. 众多场景已经全面普及智能取餐柜
  17. K-means原理、优化及应用
  18. JAVA 图片地址路径转换 Base64 工具类
  19. vue 常用ui组件库
  20. JDBC四:操作Blob类型字段

热门文章

  1. CMU硕士101-千奇百怪的排序算法
  2. 4.TP6学习 - jwt + 微信小程序验证token
  3. 软银拟出售价值72亿美元阿里股权:接近清仓 将推动Arm上市
  4. linux执行命令全称,Linux常用命令全称
  5. python控制视频播放器的大小与位置_python_十几行代码实现简单播放器
  6. 哈工大 计算机系统安全 复习整理 作业答案
  7. Python办公自动化学习笔记--Word操作
  8. PHP+MYSQL基于ThinkPHP在线影院网站的设计与实现
  9. codeforces 577
  10. 移动端开发之图片上传与显示