📜  查找两个列表给定的区间的交集(1)

📅  最后修改于: 2023-12-03 15:10:43.499000             🧑  作者: Mango

查找两个列表给定的区间的交集

在开发过程中,经常会涉及到查找两个列表给定的区间的交集。这个功能可以用于数据分析,例如查找两个时间段内的重叠部分。

下面是一个Python程序示例,用于查找两个列表的区间交集:

def intersect_intervals(intervals1, intervals2):
    result = []
    i, j = 0, 0
    while i < len(intervals1) and j < len(intervals2):
        start1, end1 = intervals1[i]
        start2, end2 = intervals2[j]
        if end1 < start2:
            i += 1
        elif end2 < start1:
            j += 1
        else:
            result.append((max(start1, start2), min(end1, end2)))
            if end1 < end2:
                i += 1
            else:
                j += 1
    return result

这个函数接受两个参数 intervals1intervals2,每个参数是一个由 (start, end) 元组表示的区间列表。 返回的结果是一个由这两个列表的区间交集组成的新列表。

算法的思想是将两个列表的区间逐个进行比较,一旦发现有重叠的部分,就将其加入到结果列表中。具体实现的细节见代码注释。

下面是一个示例使用方法:

intervals1 = [(1, 3), (8, 10), (15, 18)]
intervals2 = [(2, 6), (9, 12), (16, 20)]

result = intersect_intervals(intervals1, intervals2)

print(result)

输出的结果是:

[(2, 3), (9, 10), (16, 18)]

这表示两个列表中的区间 (2, 3)(9, 10)(16, 18) 是它们的交集部分。

以上就是查找两个列表给定的区间的交集的一个Python示例。