📌  相关文章
📜  在给定间隔中找到不重叠的间隔(1)

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

在给定间隔中找到不重叠的间隔

在编写程序时,经常需要在一系列间隔中找到不重叠的间隔。这可以通过使用贪心算法来解决问题。以下是解决这个问题的一些步骤。

步骤
  1. 以结束时间为基础对间隔进行排序
  2. 选择第一个间隔作为当前间隔,将它加入结果列表中。
  3. 对于每个间隔:
    • 如果当前间隔的结束时间小于下一个间隔的开始时间,将下一个间隔加入结果列表中,并将它设置为当前间隔。
    • 如果当前间隔的结束时间大于或等于下一个间隔的开始时间,则跳过。
# Python 代码实现

def interval_scheduling(intervals):
    """
    :param intervals: List[List[int]]
    :return: List[List[int]]
    """
    intervals = sorted(intervals, key=lambda x: x[1])
    res = [intervals[0]]
    for interval in intervals[1:]:
        if res[-1][1] <= interval[0]:
            res.append(interval)
    return res
示例

以下是一个例子,其中第二个间隔和第四个间隔重叠,必须从结果列表中排除。

intervals = [[1, 3], [2, 4], [3, 6], [5, 7], [8, 9]]
print(interval_scheduling(intervals))
# Output: [[1, 3], [3, 6], [8, 9]]
总结

使用贪心算法可以有效地解决在给定间隔中找到不重叠的间隔的问题。这个问题可以通过排序间隔来简化,然后只选择不重叠的间隔。