tôi có như sau:Hợp nhất các khoảng thời gian chồng chéo?
public class Interval
{
DateTime Start;
DateTime End;
}
Tôi có một đối tượng List<Interval>
chứa nhiều khoảng thời gian. Tôi cố gắng để đạt được những điều sau đây (tôi đã sử dụng số để làm cho nó dễ hiểu):
[(1, 5), (2, 4), (3, 6)] ---> [(1,6)]
[(1, 3), (2, 4), (5, 8)] ---> [(1, 4), (5,8)]
Tôi hiện làm điều này bằng Python như sau:
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)
nhưng đang cố gắng để đạt được như vậy trong C# (LINQ sẽ là tốt nhất nhưng tùy chọn). Bất kỳ đề xuất về cách làm điều này một cách hiệu quả?
Đối với một Khoảng thời gian nhất định, bạn có đảm bảo rằng (Bắt đầu
@AndreCalil: Yeap. Tôi có thể đảm bảo điều kiện đó. – Legend
Các khoảng có luôn được sắp xếp trong danh sách gốc không? –