class Solution {
//首先求解最多有多少个不相交子集
public int intervalSchedule(int[][] intvs){
if(intvs.length==0){
return 0;
}
Arrays.sort(intvs,new Comparator<int[]>(){
public int compare(int[] a,int []b){
return a[1]-b[1];
}
});
//至少有1个区间不相交
int count=1;
//排序后,第一个期间就是x
int x_end=intvs[0][1];
for(int []interval:intvs){
int start=interval[0];
if(start>x_end){//这里的不相交子集的限制条件是一个区间的末尾不和另外一个区间有交集,这其中包含区间边界
//如果找到下一个可选择区间
count++;
x_end=interval[1];//更新end
}
}
return count;
}
public int findMinArrowShots(int[][] points) {
return intervalSchedule(points);
}
}
Leetcode:452. 用最少数量的箭引爆气球
最新推荐文章于 2025-02-07 20:07:53 发布
本文深入探讨了区间调度问题,提出了一种高效的算法解决方案。通过定义不相交子集的概念,利用排序和遍历技巧,该算法能够快速确定最大数量的不相交区间集合,适用于箭靶最小数量求解等场景。
593

被折叠的 条评论
为什么被折叠?



