Problems › JavaScript › events
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.
conflictPairs(events: list<Event>) → int
Where you start
function conflictPairs(events) {
}
Worked examples
| Call | Result |
|---|---|
conflictPairs([{"start":1,"end":5},{"start":3,"end":8},{"start":10,"end":15}]) | 1 |
conflictPairs([{"start":1,"end":5},{"start":6,"end":10}]) | 0 |
conflictPairs([{"start":1,"end":5},{"start":2,"end":4},{"start":3,"end":8}]) | 3 |
conflictPairs([{"start":1,"end":10},{"start":2,"end":3},{"start":4,"end":5},{"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 JavaScript
function conflictPairs(events) {
let count = 0;
for (let i = 0; i < events.length; i++) {
for (let j = i + 1; j < events.length; j++) {
if (events[i].start < events[j].end && events[j].start < events[i].end) count++;
}
}
return count;
}