LeetCode——5731. 座位预约管理系统(Seat Reservation Manager)[中等]——分析及代码(Java)
LeetCode——5731. 座位预约管理系统[Seat Reservation Manager][中等]——分析及代码[Java]
- 一、题目
- 二、分析及代码
- 1. 最小堆(优先队列)
- (1)思路
- (2)代码
- (3)结果
- 三、其他
一、题目
请你设计一个管理 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 次。
来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/seat-reservation-manager
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。
二、分析及代码
1. 最小堆(优先队列)
(1)思路
设计一个最小堆管理座位的编号,即可满足上述要求。
(2)代码
class SeatManager {PriorityQueue<Integer> pq = new PriorityQueue<Integer>();//最小堆public SeatManager(int n) {for (int i = 1; i <= n; i++)pq.offer(i);}public int reserve() {return pq.poll();}public void unreserve(int seatNumber) {pq.offer(seatNumber);}
}
(3)结果
执行用时 :99 ms,在所有 Java 提交中击败了 100.00% 的用户;
内存消耗 :85.7 MB,在所有 Java 提交中击败了 100.00% 的用户。
(目前提交用户量不足,暂无排名)
三、其他
暂无。
LeetCode——5731. 座位预约管理系统(Seat Reservation Manager)[中等]——分析及代码(Java)相关推荐
- LeetCode——909. 蛇梯棋(Snakes and Ladders)[中等]——分析及代码(Java)
LeetCode--909. 蛇梯棋[Snakes and Ladders][中等]--分析及代码[Java] 一.题目 二.分析及代码 1. 广度优先搜索 (1)思路 (2)代码 (3)结果 三.其 ...
- LeetCode——1871. 跳跃游戏 VII(Jump Game VII)[中等]——分析及代码(Java)
LeetCode--1871. 跳跃游戏 VII[Jump Game VII][中等]--分析及代码[Java] 一.题目 二.分析及代码 1. 动态规划 + 队列 (1)思路 (2)代码 (3)结果 ...
- LeetCode 1845. 座位预约管理系统(set)
文章目录 1. 题目 2. 解题 1. 题目 请你设计一个管理 n 个座位预约的系统,座位编号从 1 到 n . 请你实现 SeatManager 类: SeatManager(int n) 初始化一 ...
- Java计算机毕业设计图书馆座位预约管理系统源码+系统+数据库+lw文档
Java计算机毕业设计图书馆座位预约管理系统源码+系统+数据库+lw文档 Java计算机毕业设计图书馆座位预约管理系统源码+系统+数据库+lw文档 本源码技术栈: 项目架构:B/S架构 开发语言:Ja ...
- LeetCode—5757. 矩阵中最大的三个菱形和(Get Biggest ...)[中等]—分析及代码(Java)
LeetCode--5757. 矩阵中最大的三个菱形和[Get Biggest Three Rhombus Sums in a Grid][中等]--分析及代码[Java] 一.题目 二.分析及代码 ...
- LeetCode——1888. 使二进制字符串字符交替的最少反转次数(Minimum Number of Flips to Make the Binary ...)[中等]——分析及代码(Java)
LeetCode--1888. 使二进制字符串字符交替的最少反转次数[Minimum Number of Flips to Make the Binary String Alternating][中等 ...
- LeetCode——1834. 单线程 CPU(Single-Threaded CPU)[中等]——分析及代码(Java)
LeetCode--1834. 单线程 CPU[Single-Threaded CPU][中等]--分析及代码[Java] 一.题目 二.分析及代码 1. 优先队列 (1)思路 (2)代码 (3)结果 ...
- LeetCode——1849. 将字符串拆分为递减的连续值(Splitting a String Into Descending Consecutive Val..)[中等]——分析及代码(Java)
LeetCode--1849. 将字符串拆分为递减的连续值[Splitting a String Into Descending Consecutive Values][中等]--分析及代码[Java ...
- LeetCode——1104. 二叉树寻路(Path In Zigzag Labelled Binary Tree)[中等]——分析及代码(Java)
LeetCode--1104. 二叉树寻路[Path In Zigzag Labelled Binary Tree][中等]--分析及代码[Java] 一.题目 二.分析及代码 1. 按位置求解 (1 ...
- LeetCode——1824. 最少侧跳次数(Minimum Sideway Jumps)[中等]——分析及代码(Java)
LeetCode--1824. 最少侧跳次数[Minimum Sideway Jumps][中等]--分析及代码[Java] 一.题目 二.分析及代码 1. 动态规划(二维数组) (1)思路 (2)代 ...
最新文章
- Android Jetpack组件总览
- kinect二次开发_Kinect for Windows SDK开发初体验(二)操作Camera
- [并发编程] - Executor框架#ThreadPoolExecutor源码解读01
- 学习笔记Kafka(六)—— Kafka Consumer API及开发实例
- boost::local_time模块实现打印本地日期时间的测试程序
- OpenCV 进阶应用,用编程手段搞定图像处理
- java 并发模型总类_java并发编程系列-内存模型基础
- 红帽 jboss_红帽峰会2015所需的JBoss BPM内容指南
- Spring安全性和密码编码
- node+读写文件_python高级:2.文件读写part2
- TensorFlow基础篇(三)——tf.nn.softmax_cross_entropy_with_logits
- c语言专业面试问题,c语言面试问题(共3篇).doc
- Ubuntu系统安装ghostscript seq2logo
- 最近工作用到的sql脚本
- 触摸屏——S5PV210的触摸屏的理论与操作
- 学习yigo遇到的问题
- 源文件如何一步步到可执行程序【程序员必修课】
- 物联网的coap协议
- (附源码)ssm基于JavaEE的电脑销售管理系统设计与实现 毕业设计021143
- Unity TouchScripts实例 - 判断在物体上滑动
热门文章
- windows平台HTTP代理服务器搭建(CCproxy)
- 局域网自定义域名H5站点移动设备测试时的代理设置
- 如何对客户行为进行数据分析?
- JS获取验证码页面显示处理
- C语言数据结构与算法-------查找(二)哈希法
- 1.Modbus通信协议-什么是Modbus?
- openpyxl自动设置列宽
- oserror mysql config not found_解决问题:OSError: mysql_config not found
- python实验总结与反思_近期总结与反思
- 金三角图形c语言,升哥学堂 | 实战均线形态——“金三角”