首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >满足冲突算法

满足冲突算法
EN

Stack Overflow用户
提问于 2011-02-05 04:02:34
回答 5查看 16.2K关注 0票数 9

我今天有一个面试,被要求检查两次会议是否有冲突。每次会议都有开始时间和结束时间。我试着回答这个问题,但不是说specific..can有人抛出了一些想法?

代码语言:javascript
复制
bool IsConflict(Datetime s1, Datetime e1, Datetime s2, Datetime e2)

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

E.g

如果满足以下条件,则为真:

(s1,e1)= 8,10

(s2,e2) = 9,11

(s1,e1)= 7,10

(s2,e2) = 8,9

(s1,e1)= 8,11

(s2,e2) = 9,11等等

EN

回答 5

Stack Overflow用户

发布于 2011-02-05 04:16:34

这是基本的区间代数,请参阅my answer here for more details,但代码将如下所示:

代码语言:javascript
复制
bool IsConflict(Datetime s1, Datetime e1, Datetime s2, Datetime e2)
{
    return (s1 < e2) && (e1 > s2);
}

我假设有两次会议,一次会议在另一次会议结束时开始,另一次会议结束时没有冲突。

票数 24
EN

Stack Overflow用户

发布于 2011-02-05 04:13:45

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

代码语言:javascript
复制
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;
}
票数 2
EN

Stack Overflow用户

发布于 2011-02-05 04:13:45

当且仅当max(s1, s2) < min(e1, e2)时,会议会重叠。这种基于交集的方法假设间隔(s, e)是开放的,并暗示(正确或错误地)空会议s = e不能与另一个会议重叠。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4902385

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档