我今天有一个面试,被要求检查两次会议是否有冲突。每次会议都有开始时间和结束时间。我试着回答这个问题,但不是说specific..can有人抛出了一些想法?
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等等
发布于 2011-02-05 04:16:34
这是基本的区间代数,请参阅my answer here for more details,但代码将如下所示:
bool IsConflict(Datetime s1, Datetime e1, Datetime s2, Datetime e2)
{
return (s1 < e2) && (e1 > s2);
}我假设有两次会议,一次会议在另一次会议结束时开始,另一次会议结束时没有冲突。
发布于 2011-02-05 04:13:45
在两个间隔的简单情况下,我认为这将会起作用(前面未测试的伪代码):
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;
}发布于 2011-02-05 04:13:45
当且仅当max(s1, s2) < min(e1, e2)时,会议会重叠。这种基于交集的方法假设间隔(s, e)是开放的,并暗示(正确或错误地)空会议s = e不能与另一个会议重叠。
https://stackoverflow.com/questions/4902385
复制相似问题