Skip to main content
Back to problems
#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)
LeetCode
solution.rs
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));
  }
}