给定两个包含整数范围[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);
}
Run Code Online (Sandbox Code Playgroud)
但我希望有更有效的方法来计算它.
在最少的操作方面,哪种方法最有效.
我目前有两个数组,每个数组包含范围.你将如何获得这两个数组的交集.换句话说,我想得到一个范围数组,它只包含两个原始数组中包含的范围.我尝试过.Intersect,但是在我学习的时候这对数组不起作用.
array1 :(范围("A1"),范围("B1"),范围("C1"))array2 :(范围("A1"),范围("A2"),范围("A3"))
结果:(范围("A1"))