相关疑难解决方法(0)

检测重叠周期的算法

我要检测两个时间段是否重叠.
每个期间都有开始日期和结束日期.
我需要检测我的第一个时间段(A)是否与另一个时间段(B/C)重叠.
在我的情况下,如果B的开头等于A的结尾,它们不重叠(反过来)
我发现以下情况:

在此输入图像描述

所以实际上我这样做是这样的:

tStartA < tStartB && tStartB < tEndA //For case 1
OR
tStartA < tEndB && tEndB <= tEndA //For case 2
OR
tStartB < tStartA  && tEndB > tEndA //For case 3
Run Code Online (Sandbox Code Playgroud)

(案例4在案例1或案例2中被记入帐户)

有效,但似乎效率不高.

所以,首先在c#中有一个现有的类可以对此进行建模(一个时间段),类似于时间跨度,但具有固定的开始日期.

其次:是否已经有ac#代码(比如在DateTime类中)可以处理这个问题?

第三:如果不是,那么你最快速地进行这种比较的方法是什么?

.net c# algorithm time datetime

379
推荐指数
6
解决办法
12万
查看次数

测试两个重叠整数范围的最有效方法是什么?

给定两个包含整数范围[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)

但我希望有更有效的方法来计算它.

在最少的操作方面,哪种方法最有效.

comparison performance integer range

223
推荐指数
8
解决办法
8万
查看次数

标签 统计

.net ×1

algorithm ×1

c# ×1

comparison ×1

datetime ×1

integer ×1

performance ×1

range ×1

time ×1