ガレスの答えを補完するために。より複雑なタイプのオーバーラップチェックを間隔で実行する必要がある人のために、間隔ツリーと呼ばれる優れたデータ構造があります。
https://en.wikipedia.org/wiki/Interval_tree
間隔を保持するツリーデータ構造。具体的には、任意の間隔またはポイントと重複するすべての間隔を効率的に見つけることができます。
このjavascript実装からの例
let tree = new IntervalTree();
let intervals = [[6,8],[1,4],[5,12],[1,1],[5,7]];
// Insert interval as a key and string "val0", "val1" etc. as a value
for (let i=0; i < intervals.length; i++) {
tree.insert(intervals[i],"val"+i);
}
// Get array of keys sorted in ascendant order
let sorted_intervals = tree.keys; // expected array [[1,1],[1,4],[5,7],[5,12],[6,8]]
// Search items which keys intersect with given interval, and return array of values
let values_in_range = tree.search([2,3]) // expected array ['val1']