找到涵盖整个时间间隔的最小点数?

时间:2015-01-03 10:24:57

标签: algorithm intervals

给定一组间隔[x,y] where 0 <= x,y <= 2000如何找到可以覆盖的最小点数(即每个间隔应该包含所得点集中的至少一个点)所有间隔?

示例:

Given Set of intervals:
    [2,5]
    [3,7]
    [7,10]

然后答案应该是2(覆盖所有间隔所需的最小点数),因为点x=3,x=7是一个解决方案。

1 个答案:

答案 0 :(得分:10)

您可以使用贪心算法:

  1. 按端点对所有间隔进行排序(按递增顺序排列)。

  2. 迭代排序的数组间隔。间隔结束时,有两个选项:

    1. 已经有一点了。在这种情况下,不应该做任何事情。
    2. 尚未涵盖。然后应将此间隔的终点插入到结果集中。
  3. 此算法生成的结果集是最佳的。