我有一个方法可以获得这个类的许多对象
class Range<T>
{
public T Start;
public T End;
}
Run Code Online (Sandbox Code Playgroud)
在我的情况T是DateTime,但让我们使用int的简便性.我想要一种方法,将这些范围折叠成覆盖相同"区域"但不重叠的区域.
所以,如果我有以下范围
该方法应该给我
猜猜它会被称为联盟?我想方法签名看起来像这样:
public static IEnumerable<Range<T>> Collapse<T>(
this IEnumerable<Range<T>>,
IComparable<T> comparer)
{
...
}
Run Code Online (Sandbox Code Playgroud)
我在这里看了一些类似的其他问题,但我还没有找到它的实现.这个答案和同一问题的其他一些答案描述了算法,但我不太清楚我是否理解算法.也不是特别擅长实现算法,所以我希望有人可以帮助我.