#1845
Medium Algorithms Seat reservation manager
Design Heap (Priority Queue)
67.1% acceptance
Feb 23, 2026
1477
91
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
Rust
Time O(1)
Space O(1)
use std::collections::BinaryHeap;
use std::cmp::Reverse;
pub struct SeatManager {
available: BinaryHeap<Reverse<i32>>,
}
impl SeatManager {
pub fn new(n: i32) -> Self {
let available = (1..=n).map(Reverse).collect();
SeatManager { available }
}
pub fn reserve(&mut self) -> i32 {
self.available.pop().unwrap().0
}
pub fn unreserve(&mut self, seat_number: i32) {
self.available.push(Reverse(seat_number));
}
}