-
数轴上有 n 个区间. 现在需要在数轴上选取一些点, 使得任意一个区间内至少包含一个点.
-
-
返回最少选取的点的数目.
-
-
样例
-
样例 1:
-
-
输入: [(1,5), (4,8), (10,12)]
-
输出: 2
-
解释:
-
选择两个点: 5, 10
-
第一个区间 [1, 5] 包含了 5
-
第二个区间 [4, 8] 包含了 5
-
第三个区间 [10, 12] 包含了 10
-
样例 2:
-
-
输入: [(1,5), (4,8), (5,12)]
-
输出: 1
-
解释: 所有区间都包含 5
public class Solution {
/**-
@param a: the array a
-
@return: return the minimal points number
*/
// write your code here
public int getAns(List a) {
int n=a.size();
if (a == null || a.size() == 0)
return 0;Collections.sort(a, new Comparator() {
public int compare(Interval arg0, Interval arg1) {
if (arg0.start > arg1.start) {
return 1;
} else if (arg0.start < arg1.start) {
return -1;
} else {
return 0;
}
}
});int result = 1;
int rangeLeft = a.get(0).start;
int rangeRight = a.get(0).end;for (int i = 1; i < n; ++i) {
if (a.get(i).start <= rangeRight) {
rangeRight = Math.min(a.get(i).end, rangeRight);
} else {
result++;
rangeLeft = a.get(i).start;
rangeRight = a.get(i).end;
}}
return result;
// write your code here
}
}
-
LintCode 1668. 区间最小覆盖
最新推荐文章于 2022-08-04 04:28:56 发布