반응형
https://leetcode.com/problems/seat-reservation-manager/
min heap을 사용하여 풀 수 있었습니다.
예약 해제된 seatNumber는 min heap에 넣어줍니다.
예약되었던 seatNumber의 최댓값을 기억해줍니다.
예약 해제되었다는 것은 이미 예약되었던 seatNumber의 최댓값보다 작음을 의미합니다.
min heap에 seatNumber가 있으면 예약 해제되었던 해당 좌석을 예약해주고, 그렇지 않다면 새로운 좌석을 예약해주고 seatNumber의 최댓값을 업데이트해줍니다.
class SeatManager {
public:
priority_queue<int> pq;
int maxReservedSeatNumber = 1;
SeatManager(int n) {
}
int reserve() {
if(!pq.empty()) {
int res = -pq.top(); pq.pop();
return res;
}
return maxReservedSeatNumber++;
}
void unreserve(int seatNumber) {
pq.push(-seatNumber);
}
};
반응형
'Algorithm' 카테고리의 다른 글
LeetCode 1743. Restore the Array From Adjacent Pairs (0) | 2023.11.10 |
---|---|
LeetCode 1759. Count Number of Homogenous Substrings (0) | 2023.11.10 |
LeetCode 1441. Build an Array With Stack Operations (0) | 2023.11.04 |
LeetCode 2265. Count Nodes Equal to Average of Subtree (0) | 2023.11.02 |
LeetCode 501. Find Mode in Binary Search Tree (0) | 2023.11.02 |