本文介绍了查找数字范围交集的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

找出两个数字范围是否相交的最佳方法是什么?

What is the best way to find out whether two number ranges intersect?

我的数字范围是 3023-7430 ,现在我想测试以下哪个数字范围与之相交:< 3000、3000-6000、6000-8000、8000-10000,> 10000.答案应该是 3000-6000 6000-8000 .

My number range is 3023-7430, now I want to test which of the following number ranges intersect with it: <3000, 3000-6000, 6000-8000, 8000-10000, >10000. The answer should be 3000-6000 and 6000-8000.

在任何编程语言中,执行此操作的一种很好的,有效的数学方法是什么?

What's the nice, efficient mathematical way to do this in any programming language?

推荐答案

只是一个伪代码猜测:

Set<Range> determineIntersectedRanges(Range range, Set<Range> setofRangesToTest)
{
  Set<Range> results;
  foreach (rangeToTest in setofRangesToTest)
  do
    if (rangeToTest.end <range.start) continue; // skip this one, its below our range
    if (rangeToTest.start >range.end) continue; // skip this one, its above our range
    results.add(rangeToTest);
  done
  return results;
}

这篇关于查找数字范围交集的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!

09-14 16:09