给定两个包含整数范围 [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);
}
但我希望有更有效的方法来计算这个。就最少的操作而言,哪种方法最有效。
最佳答案
范围重叠意味着什么?这意味着存在一些在两个范围内的数字 C,即
x1 <= C <= x2
和y1 <= C <= y2
为避免混淆,考虑范围是:[x1:x2] 和 [y1:y2]
现在,如果我们可以假设范围是格式良好的(因此 x1
x1 <= y2 && y1 <= x2
要么(StartA = StartB)
关于performance - 测试两个整数范围重叠的最有效方法是什么?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/3269434/