Leetcode 2054 Solution
This article provides solution to leetcode question 2054 (the-number-of-the-smallest-unoccupied-chair)
Access this page by simply typing in "lcs 2054" in your browser address bar if you have bunnylol configured.
Leetcode Question Link
https://leetcode.com/problems/the-number-of-the-smallest-unoccupied-chair
Solution
class Solution:
def smallestChair(self, times: List[List[int]], targetFriend: int) -> int:
events = []
for i, (start, end) in enumerate(times):
events.append((start, 1, i))
events.append((end, -1, i))
events.sort()
available = list(range(len(times)))
heapq.heapify(available)
taken = {}
for t, op, friend_id in events:
if op == 1:
seat = heapq.heappop(available)
taken[friend_id] = seat
if friend_id == targetFriend:
return seat
elif op == -1:
seat = taken[friend_id]
del taken[friend_id]
heapq.heappush(available, seat)