我有以下:合併重疊時間間隔?
public class Interval
{
DateTime Start;
DateTime End;
}
我有包含多個間隔List<Interval>
對象。我想實現如下(我用的數字,這樣才容易理解):
[(1, 5), (2, 4), (3, 6)] ---> [(1,6)]
[(1, 3), (2, 4), (5, 8)] ---> [(1, 4), (5,8)]
我目前做這在Python如下:
def merge(times):
saved = list(times[0])
for st, en in sorted([sorted(t) for t in times]):
if st <= saved[1]:
saved[1] = max(saved[1], en)
else:
yield tuple(saved)
saved[0] = st
saved[1] = en
yield tuple(saved)
但想實現在同一C#(LINQ將是最好的,但可選)。有關如何有效地做到這一點的任何建議?
對於給定的時間間隔,是否確保(Start
2012-07-14 01:07:27
@AndreCalil:Yeap。我可以確保這一條件。 – Legend 2012-07-14 01:20:37
間隔是否始終在原始列表中排序? – 2012-07-14 01:27:39