满足冲突算法

sam*_*_33 8 algorithm datetime compare

我今天接受了采访,并被要求检查两次会面是否相互冲突.每次会议都有开始时间和结束时间.我试图回答这个问题但不是那个具体的问题.有人可以提出一些想法吗?

bool IsConflict(Datetime s1, Datetime e1, Datetime s2, Datetime e2)
Run Code Online (Sandbox Code Playgroud)

如果存在冲突,则应返回true;如果没有冲突,则返回false.

例如

如果:
(s1,e1)= 8,10 则为真

(s2,e2)= 9,11

(s1,e1)= 7,10

(s2,e2)= 8,9

(s1,e1)= 8,11

(s2,e2)= 9,11等

ang*_*son 20

这是基本的区间代数,请参阅我的答案以获取更多详细信息,但代码如下所示:

bool IsConflict(Datetime s1, Datetime e1, Datetime s2, Datetime e2)
{
    return (s1 < e2) && (e1 > s2);
}
Run Code Online (Sandbox Code Playgroud)

我假设两个会议开始,其中一个开始而另一个结束没有冲突.

  • 不,我明确要求CW避免这种情况,这个问题从广义上讲是一个重复,但又有足够的区别,可以独立存在,但我的回答不是,因此是CW。 (2认同)

Bil*_*ard 2

在两个间隔的简单情况下,我认为这会起作用(前面未经测试的伪代码):

bool IsConflict(Datatime s1, Datatime e1, Datatime s2, Datatime e2) {
    if( s1 < s2 ) {
        // meeting 1 starts first
        if( e1 > s2 ) return true; // overlap
    }
    else {
        // meeting 2 starts first
        if( e2 > s1 ) return true; // overlap
    }

    return false;
}
Run Code Online (Sandbox Code Playgroud)