Back to all solutions
#1845 - Seat Reservation Manager
Problem Description
Design a system that manages the reservation state of n seats that are numbered from 1 to n.
Implement the SeatManager class:
- SeatManager(int n) Initializes a SeatManager object that will manage n seats numbered from 1 to n. All seats are initially available.
- int reserve() Fetches the smallest-numbered unreserved seat, reserves it, and returns its number.
- void unreserve(int seatNumber) Unreserves the seat with the given seatNumber.
Solution
/**
* @param {number} n
*/
var SeatManager = function(n) {
this.nextAvailable = 1;
this.unreservedSeats = new Set();
};
/**
* @return {number}
*/
SeatManager.prototype.reserve = function() {
if (this.unreservedSeats.size > 0) {
const minSeat = Math.min(...this.unreservedSeats);
if (minSeat < this.nextAvailable) {
this.unreservedSeats.delete(minSeat);
return minSeat;
}
}
return this.nextAvailable++;
};
/**
* @param {number} seatNumber
* @return {void}
*/
SeatManager.prototype.unreserve = function(seatNumber) {
this.unreservedSeats.add(seatNumber);
};