找到覆盖整组间隔的最少点数?

Finding minimum number of points which covers entire set of intervals?

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

示例:

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

那么答案应该是 2(覆盖所有间隔所需的最少点数),因为点 x=3,x=7 是一种解决方案。

你可以使用贪心算法:

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

  2. 遍历已排序的区间数组。当一个间隔结束时,有两种选择:

    1. 它已经被一些点覆盖了。在这种情况下什么都不应该做。
    2. 尚未涵盖。然后这个区间的终点应该被插入到结果集中。

该算法生成的结果集是最优的。