假设有两个包含上限和下限值的区间 [x1:x2] 和 [y1:y2],其中 x1 ≤ x2
且 y1 ≤ y2
,如何最有效地测试这两个区间是否有任何重叠部分?
一个简单的实现方式如下:
bool testOverlap(int x1, int x2, int y1, int y2) {
return (x1 >= y1 && x1 <= y2) ||
(x2 >= y1 && x2 <= y2) ||
(y1 >= x1 && y1 <= x2) ||
(y2 >= x1 && y2 <= x2);
}
但我觉得有更有效率的方法可以计算。
在操作最少的情况下,哪种方法是最有效的?