找到覆盖整组间隔的最少点数?
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
是一种解决方案。
你可以使用贪心算法:
按终点对所有间隔进行排序(按递增顺序)。
遍历已排序的区间数组。当一个间隔结束时,有两种选择:
- 它已经被一些点覆盖了。在这种情况下什么都不应该做。
- 尚未涵盖。然后这个区间的终点应该被插入到结果集中。
该算法生成的结果集是最优的。
给定一组区间[x,y] where 0 <= x,y <= 2000
如何找到可以覆盖所有区间的最小点数(即每个区间应至少包含点的结果集中的一个点)?
示例:
Given Set of intervals:
[2,5]
[3,7]
[7,10]
那么答案应该是 2(覆盖所有间隔所需的最少点数),因为点 x=3,x=7
是一种解决方案。
你可以使用贪心算法:
按终点对所有间隔进行排序(按递增顺序)。
遍历已排序的区间数组。当一个间隔结束时,有两种选择:
- 它已经被一些点覆盖了。在这种情况下什么都不应该做。
- 尚未涵盖。然后这个区间的终点应该被插入到结果集中。
该算法生成的结果集是最优的。