Untitled
unknown
plain_text
9 months ago
1.5 kB
5
Indexable
class MyCalendarTwo {
private List<Booking> bookings;
private List<Booking> unique_overlapped_regions_intervals;
public MyCalendarTwo() {
bookings = new ArrayList<>();
unique_overlapped_regions_intervals = new ArrayList<>();
}
private boolean isOverlap(int s1, int e1, int s2, int e2) {
int overlapped_region_start = Math.max(s1,s2);
int overlapped_region_end = Math.min(e1,e2);
return overlapped_region_start <= overlapped_region_end;
}
public boolean book(int start, int end) {
// Check if the current booking overlaps with any double booking (triple booking)
for (Booking over_reg_interval : unique_overlapped_regions_intervals) {
if (isOverlap(over_reg_interval.start, over_reg_interval.end, start, end)) {
return false; // Triple booking detected
}
}
// Check for double booking and record overlaps
for (Booking booking : bookings) {
if (isOverlap(booking.start, booking.end, start, end)) {
unique_overlapped_regions_intervals.add(new Booking(Math.max(booking.start, start), Math.min(booking.end, end)));
}
}
bookings.add(new Booking(start, end)); // Add the current booking
return true;
}
private class Booking {
int start, end;
Booking(int start, int end) {
this.start = start;
this.end = end;
}
}
}
Editor is loading...
Leave a Comment