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)相关推荐

  1. LeetCode——909. 蛇梯棋(Snakes and Ladders)[中等]——分析及代码(Java)

    LeetCode--909. 蛇梯棋[Snakes and Ladders][中等]--分析及代码[Java] 一.题目 二.分析及代码 1. 广度优先搜索 (1)思路 (2)代码 (3)结果 三.其 ...

  2. LeetCode——1871. 跳跃游戏 VII(Jump Game VII)[中等]——分析及代码(Java)

    LeetCode--1871. 跳跃游戏 VII[Jump Game VII][中等]--分析及代码[Java] 一.题目 二.分析及代码 1. 动态规划 + 队列 (1)思路 (2)代码 (3)结果 ...

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

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

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

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

  5. LeetCode—5757. 矩阵中最大的三个菱形和(Get Biggest ...)[中等]—分析及代码(Java)

    LeetCode--5757. 矩阵中最大的三个菱形和[Get Biggest Three Rhombus Sums in a Grid][中等]--分析及代码[Java] 一.题目 二.分析及代码 ...

  6. LeetCode——1888. 使二进制字符串字符交替的最少反转次数(Minimum Number of Flips to Make the Binary ...)[中等]——分析及代码(Java)

    LeetCode--1888. 使二进制字符串字符交替的最少反转次数[Minimum Number of Flips to Make the Binary String Alternating][中等 ...

  7. LeetCode——1834. 单线程 CPU(Single-Threaded CPU)[中等]——分析及代码(Java)

    LeetCode--1834. 单线程 CPU[Single-Threaded CPU][中等]--分析及代码[Java] 一.题目 二.分析及代码 1. 优先队列 (1)思路 (2)代码 (3)结果 ...

  8. LeetCode——1849. 将字符串拆分为递减的连续值(Splitting a String Into Descending Consecutive Val..)[中等]——分析及代码(Java)

    LeetCode--1849. 将字符串拆分为递减的连续值[Splitting a String Into Descending Consecutive Values][中等]--分析及代码[Java ...

  9. LeetCode——1104. 二叉树寻路(Path In Zigzag Labelled Binary Tree)[中等]——分析及代码(Java)

    LeetCode--1104. 二叉树寻路[Path In Zigzag Labelled Binary Tree][中等]--分析及代码[Java] 一.题目 二.分析及代码 1. 按位置求解 (1 ...

  10. LeetCode——1824. 最少侧跳次数(Minimum Sideway Jumps)[中等]——分析及代码(Java)

    LeetCode--1824. 最少侧跳次数[Minimum Sideway Jumps][中等]--分析及代码[Java] 一.题目 二.分析及代码 1. 动态规划(二维数组) (1)思路 (2)代 ...

最新文章

  1. Android Jetpack组件总览
  2. kinect二次开发_Kinect for Windows SDK开发初体验(二)操作Camera
  3. [并发编程] - Executor框架#ThreadPoolExecutor源码解读01
  4. 学习笔记Kafka(六)—— Kafka Consumer API及开发实例
  5. boost::local_time模块实现打印本地日期时间的测试程序
  6. OpenCV 进阶应用,用编程手段搞定图像处理
  7. java 并发模型总类_java并发编程系列-内存模型基础
  8. 红帽 jboss_红帽峰会2015所需的JBoss BPM内容指南
  9. Spring安全性和密码编码
  10. node+读写文件_python高级:2.文件读写part2
  11. TensorFlow基础篇(三)——tf.nn.softmax_cross_entropy_with_logits
  12. c语言专业面试问题,c语言面试问题(共3篇).doc
  13. Ubuntu系统安装ghostscript seq2logo
  14. 最近工作用到的sql脚本
  15. 触摸屏——S5PV210的触摸屏的理论与操作
  16. 学习yigo遇到的问题
  17. 源文件如何一步步到可执行程序【程序员必修课】
  18. 物联网的coap协议
  19. (附源码)ssm基于JavaEE的电脑销售管理系统设计与实现 毕业设计021143
  20. Unity TouchScripts实例 - 判断在物体上滑动

热门文章

  1. windows平台HTTP代理服务器搭建(CCproxy)
  2. 局域网自定义域名H5站点移动设备测试时的代理设置
  3. 如何对客户行为进行数据分析?
  4. JS获取验证码页面显示处理
  5. C语言数据结构与算法-------查找(二)哈希法
  6. 1.Modbus通信协议-什么是Modbus?
  7. openpyxl自动设置列宽
  8. oserror mysql config not found_解决问题:OSError: mysql_config not found
  9. python实验总结与反思_近期总结与反思
  10. 金三角图形c语言,升哥学堂 | 实战均线形态——“金三角”