How many event pairs overlap
A room-booking audit counts every pair of events that clash so the worst offenders can be resolved.
- Every event has a half-open interval [start, end).
- A pair overlaps when the two intervals share at least one point.
- Count each unordered pair once.
conflict_pairs(events: list<Event>) → int
Where you start
def conflict_pairs(events: list[Event]) -> int:
Worked examples
| Call | Result |
|---|---|
conflict_pairs([Event(start=1, end=5), Event(start=3, end=8), Event(start=10, end=15)]) | 1 |
conflict_pairs([Event(start=1, end=5), Event(start=6, end=10)]) | 0 |
conflict_pairs([Event(start=1, end=5), Event(start=2, end=4), Event(start=3, end=8)]) | 3 |
conflict_pairs([Event(start=1, end=10), Event(start=2, end=3), Event(start=4, end=5), Event(start=6, end=7)]) | 3 |
Hint
A brute-force double loop over all i < j pairs and the overlap test from bookings-overlap.
Reference solution in Python
def conflict_pairs(events: list[Event]) -> int:
count = 0
for i in range(len(events)):
for j in range(i + 1, len(events)):
if events[i].start < events[j].end and events[j].start < events[i].end:
count += 1
return count