1845. 座位预约管理系统

news/2024/9/30 9:19:27

请你设计一个管理 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.构造函数,初始化一个最小堆并填充1到n的座位号,表示所有座位初始时均可用
2.返回并移除最小堆中的最小元素,表示预订一个座位号最小的座位
3.将给定的座位号添加回最小堆,表示取消预订该座位。

完整代码:class SeatManager {private PriorityQueue<Integer> minHeap;public SeatManager(int n) {this.minHeap = new PriorityQueue<>();for (int i = 1; i <= n; i++) {minHeap.add(i);}}public int reserve() {return minHeap.poll();}public void unreserve(int seatNumber) {minHeap.add(seatNumber);}}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.ryyt.cn/news/66410.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈,一经查实,立即删除!

相关文章

CMSIS-RTOS V2封装层专题视频,一期视频将常用配置和用法梳理清楚,适用于RTX5和FreeRTOS(2024-09-28)

【前言】 本期视频就一个任务,通过ARM官方的CMSIS RTOS文档,将常用配置和用法给大家梳理清楚。对于初次使用CMSIS-RTOS的用户来说,通过梳理官方文档,可以系统的了解各种用法,方便大家再进一步的自学或者应用,起到授人以渔的作用。更深入的可以看之前分享的RTOS运行机制,…

小白生于天地之间,岂能郁郁难挖高危?

想要在挂了WAF的站点挖出高危,很难,因为这些站点,你但凡鼠标点快点,检测出了不正确动作都要给你禁IP,至于WAF绕过对于小白更是难搞。其实在众测,大部分漏洞都并非那些什么SQL注入RCE等等,而小白想要出高危,可能也只有寄托希望与未授权。小白的众测高危: 记先前某次众测…

opencascade TopoDS_Iterator源码学习拓扑迭代器

opencascade TopoDS_Iterator 前言 遍历给定 TopoDS_Shape 对象的底层形状,提供对其组件子形状的访问。每个组件形状作为带有方向的 TopoDS_Shape 返回,并且由原始值和相对值组成的复合体。 方法 1 //! 创建一个空的迭代器。 TopoDS_Iterator(); 2 //! 子形状上创建一个迭代器…

浅谈笛卡尔树

[介绍(百度百科)](笛卡尔树_百度百科 (baidu.com)) 笛卡尔树是一种特定的二叉树数据结构,可由数列构造,在范围最值查询、范围\(top_k\)查询(range top k queries)等问题上有广泛应用。它具有堆的有序性,中序遍历可以输出原数列。笛卡尔树结构由Vuillmin(1980)在解决范围…

9.30

[实验任务一]:UML复习 阅读教材第一章复习UML,回答下述问题: 面向对象程序设计中类与类的关系都有哪几种?分别用类图实例说明。 1. 继承:2. 实现:3. 关联: 4. 聚合: 5. 组合: 6. 依赖:

9.30 实验1:UML与面向对象程序设计原则

[实验任务一]:UML复习阅读教材第一章复习UML,回答下述问题:面向对象程序设计中类与类的关系都有哪几种?分别用类图实例说明。 1. 继承关系 Students类继承People类 2.实现关系 一个class类实现interface接口(可以是多个)的功能 3.依赖关系 一个类A使用到了另一…

Windows平台下安装与配置MySQL9

要在Windows平台下安装MySQL,可以使用图行化的安装包。图形化的安装包提供了详细的安装向导,以便于用户一步一步地完成对MySQL的安装。本节将详细介绍使用图形化安装包安装MySQL的方法。 1.2.1 安装MySQL 要想在Windows中运行MySQL,需要32位或64位Windows操作系统,例如Win…

VMware ESXi 8.0U3 macOS Unlocker OEM BIOS 2.7 Dell HPE 定制版 9 月更新发布

VMware ESXi 8.0U3 macOS Unlocker & OEM BIOS 2.7 Dell HPE 定制版 9 月更新发布VMware ESXi 8.0U3 macOS Unlocker & OEM BIOS 2.7 Dell HPE 定制版 9 月更新发布 VMware ESXi 8.0U3 macOS Unlocker & OEM BIOS 2.7 标准版和厂商定制版 ESXi 8.0U3 标准版,Dell …