1845. 座位预约管理系统

news/2024/10/5 14:21:04/文章来源:https://www.cnblogs.com/java-cheng/p/18441156

请你设计一个管理 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.hqwc.cn/news/806068.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

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 …

VMware Aria Suite Lifecycle 8.18 发布,新增功能概览

VMware Aria Suite Lifecycle 8.18 发布,新增功能概览VMware Aria Suite Lifecycle 8.18 - 应用生命周期管理 请访问原文链接:https://sysin.org/blog/vmware-aria-suite-lifecycle/,查看最新版。原创作品,转载请保留出处。 作者主页:sysin.org应用生命周期管理 VMware Ar…

解密prompt系列39. RAG之借助LLM优化精排环节

RAG这一章我们集中看下精排的部分。粗排和精排的主要差异其实在于效率和效果的balance。粗排和精排的主要差异其实在于效率和效果的balance。粗排模型复杂度更低,需要承上启下,用较低复杂度的模型RAG的部分我们之前讨论过信息召回的多样性,信息密度和质量,主要集中在召回,…

微积分快速入门4部分:深入(极限、导数、定积分和不定积分)

9 无穷大(极限) 无穷大是一个既迷人又可怕的概念--有整整一门课(分析)都在研究它。我们将避免理论上的细微差别:我们的目标是切实理解无穷大如何帮助我们学习微积分。 9.1 启示: 有时可以测量无穷大 两个朋友相距 10 英里,分别以每小时 5 英里的速度相向而行。一只蚊子在…

opencascade AIS_Line源码学习直线节点

opencascade AIS_Line 前言 构造用于构建复合形状的线基准。方法 1 //! 初始化线 aLine。 Standard_EXPORT AIS_Line(const Handle(Geom_Line)& aLine); 2 //! 初始化线的起始点 aStartPoint 和终点 aEndPoint。 Standard_EXPORT AIS_Line(const Handle(Geom_Point)& a…