LeetCode 452. Minimum Number of Arrows to Burst Balloons(用最少数量的箭引爆气球)
作者:互联网
题目描述:气球在一个水平数轴上摆放,可以重叠,飞镖垂直投向坐标轴,使得路径上的气球都被刺破。求解最小的投飞镖次数使所有气球都被刺破。
- 如果最多有 n 个不重叠的区间,那么就至少需要 n 个箭头穿透所有区间
- 箭头如果碰到气球的边界气球也会爆炸,所以说相当于区间的边界触碰也算重叠:
public int findMinArrowShots(int[][] points) {
if(points.length == 0) return 0;
//按照end升序排序
Arrays.sort(points, new Comparator<int[]>() {
public int compare(int[] a, int[] b) {
return a[1] - b[1];
}
});
//最大不重叠区间个数
int count = 1;
int end = points[0][1];
for(int i = 1; i < points.length; i ++) {
//端点相交,算重合区间
if(points[i][0] > end) {
count ++;
end = points[i][1];
}
}
return count;
}
图片摘自题解:
标签:count,end,Burst,int,452,Arrows,points,return,气球 来源: https://blog.csdn.net/gx17864373822/article/details/104898616