我正在用C#编写一个复杂的算法,其中一步是比较两个非常大的区间列表并找出重叠的区域。我已经尝试了很多方法来找到它们,但不确定是否覆盖了所有可能性。此外,在这一步中我的算法对于巨大的列表而言需要花费太长时间。
例如: range1 = 1-400,range2 = 200-600。因此,当我想要检查这两个范围之间的重叠部分时,我应该得到答案= 200。因为这两个范围之间有200个数字重叠。所以这就是我想要的答案,我想要两个范围之间重叠的确切整数数量。
列表示例:
List1: 1-400、401-800、801-1200等等... List2: 10240-10276、10420-10456、11646-11682等等...
现在我必须将list1的每个范围与list2的每个范围进行比较,并找出list1的某个范围是否与list2的任何范围重叠,如果是,则是什么重叠答案?这些都是为了理解而提供的样本值。
我只需要一个简单且最有效/最快的公式来找出两个范围之间的重叠答案。我可以处理其余的循环算法。
例如公式:
如果两个范围完全没有重叠,则函数必须返回0。
PS:我没有发布我的代码,因为它非常复杂,有很多条件,我只需要一个简单的公式。
例如: range1 = 1-400,range2 = 200-600。因此,当我想要检查这两个范围之间的重叠部分时,我应该得到答案= 200。因为这两个范围之间有200个数字重叠。所以这就是我想要的答案,我想要两个范围之间重叠的确切整数数量。
列表示例:
List1: 1-400、401-800、801-1200等等... List2: 10240-10276、10420-10456、11646-11682等等...
现在我必须将list1的每个范围与list2的每个范围进行比较,并找出list1的某个范围是否与list2的任何范围重叠,如果是,则是什么重叠答案?这些都是为了理解而提供的样本值。
我只需要一个简单且最有效/最快的公式来找出两个范围之间的重叠答案。我可以处理其余的循环算法。
例如公式:
var OverlappingValue = FindOverlapping(range1.StartValue, range1.EndValue,range2.StartValue, range2.EndValue);
如果两个范围完全没有重叠,则函数必须返回0。
PS:我没有发布我的代码,因为它非常复杂,有很多条件,我只需要一个简单的公式。