题目浅析

  • 想查看原题可以点击题目链接

  • 简单地说,就是给一个数字 n,现在会有两种操作,预约和取消预约,前者会拿到当前可拿的最小座位号,后者会将指定的座位号恢复为没有预约的状态,完成一系列预约和取消预约的调用。

思路分享

代码解答(强烈建议自行解答后再看)

  • 参考题解
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
class SeatManager:

def __init__(self, n: int):
self.min_seat = 1
self.more_seat = []
heapq.heapify(self.more_seat)

def reserve(self) -> int:
if self.more_seat:
return heapq.heappop(self.more_seat)
else:
self.min_seat += 1
return self.min_seat - 1

def unreserve(self, seatNumber: int) -> None:
heapq.heappush(self.more_seat, seatNumber)


# Your SeatManager object will be instantiated and called as such:
# obj = SeatManager(n)
# param_1 = obj.reserve()
# obj.unreserve(seatNumber)