Skip to content

Commit 4035aa7

Browse files
committed
"Seat Reservation Manager" solution
1 parent e416495 commit 4035aa7

File tree

2 files changed

+36
-0
lines changed

2 files changed

+36
-0
lines changed

src/seat_reservation_manager.py

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
import heapq
2+
3+
4+
class SeatManager:
5+
def __init__(self, n: int):
6+
self.i = 1
7+
self._unreserved: list[int] = []
8+
9+
def reserve(self) -> int:
10+
if self._unreserved and self._unreserved[0] < self.i:
11+
result = heapq.heappop(self._unreserved)
12+
else:
13+
result = self.i
14+
self.i += 1
15+
16+
return result
17+
18+
def unreserve(self, seat_number: int) -> None:
19+
heapq.heappush(self._unreserved, seat_number)
Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
from src.seat_reservation_manager import SeatManager
2+
3+
4+
def test_seat_manager():
5+
sm = SeatManager(5)
6+
7+
assert sm.reserve() == 1
8+
assert sm.reserve() == 2
9+
10+
sm.unreserve(2)
11+
12+
assert sm.reserve() == 2
13+
assert sm.reserve() == 3
14+
assert sm.reserve() == 4
15+
assert sm.reserve() == 5
16+
17+
sm.unreserve(5)

0 commit comments

Comments
 (0)