C# 两个日期时间列表-搜索“的链”;“颠簸”;

C# 两个日期时间列表-搜索“的链”;“颠簸”;,c#,algorithm,C#,Algorithm,我有一个应用程序,将两个客户端连接在一起。现在,在客户端连接之后,他开始发送“bump”——当bump击中服务器时,时间被添加到列表中。现在,由于有两个客户端连接在一起,所以有两个列表 我想做的是,我想查看这两个列表,并找到当两个用户都发送时差为60秒的颠簸时的时间跨度 例如: Bumps of user1: 18:28:00 18:28:30 18:29:30 18:30:00 18:30:30 Bumps of user2: 18:29:00 18:30:00 由于user2只发送了两个

我有一个应用程序,将两个客户端连接在一起。现在,在客户端连接之后,他开始发送“bump”——当bump击中服务器时,时间被添加到
列表中。现在,由于有两个客户端连接在一起,所以有两个列表

我想做的是,我想查看这两个列表,并找到当两个用户都发送时差为60秒的颠簸时的时间跨度

例如:

Bumps of user1:
18:28:00
18:28:30
18:29:30
18:30:00
18:30:30

Bumps of user2:
18:29:00
18:30:00
由于
user2
只发送了两个缓冲区,而
user1
也在同一时间发送缓冲区(相差60秒),因此两个用户的时间跨度应为1分钟

有没有什么算法可以计算出来


编辑澄清:我希望得到尽可能短的时间跨度,也可能会有一个很大的空白,然后可能会有另一个时间跨度(因此基本上会有很多时间跨度)。

这与合并排序中的合并步骤非常相似

如果X和Y是凹凸时间列表,请首先对其进行排序。之后,在以下条件下继续浏览这两个列表:

If diff(X[i],Y[j]) < 60 "Output something";

If (X[i]<Y[j])i++;
Else j++;
如果diff(X[i],Y[j])<60“输出某物”;

如果(X[i],你可能会使用一种改进的合并排序算法。你能更具体地解释一下如何计算时间跨度吗?为什么不是2.5分钟(18:28:00-18:30:30)回答正确吗?我想是的,因为user2在60秒内就在线了。@Dukeling:我们正在计算可能的最短时间跨度。因此,当
user2
开始添加凹凸时,整个过程开始了。凹凸是否会连续,一个会话只设置一个凹凸?(例如,user1没有大的跳跃,下一个值是18:40:00)在这种情况下,您只需要Min(user1.endTime,user2.endTime)-Max(user1.startTime,user2.startTime)。这是第一个离开减去最后一个进入。如果颠簸不是连续的,那么你需要将它们分割成时间跨度,并进行同样的计算。@ScottMermelstein:它们不是连续的,会有很多这样的会话,这是我的错,我没有写,抱歉。