算法问题
已知数轴上的两个区间:R1的起点是min1,区间长度len1,R2的起点是min2,区间长度len2
求这两个区间的重叠长度,若不重叠,求他们之间的距离
看图说话好了
注意的是并没有告知谁在左边谁在右边
我先把四个端点排序,找到最大和最小的,然后计算长度,如果不重叠那算出来的就是正值,重叠的话就相当于距离是负值
排序时候利用同一个区间已经知道右端点比左端点大的已知信息
public static double DistanceOfRange(double min1, double len1, double min2, double len2)
{
var min = min1;
var max = min1 + len1;
if (min1 > min2)
min = min2;
if (min1 + len1 < min2 + len2) // <
max = min2 + len2;
return max - min - len1 - len2;
}