题目内容:
- 在二维空间中存在许多气球,对于每个气球提供水平直径的起始坐标Xstart和结束坐标Xend,因为是水平的,纵坐标并不重要。开始坐标总是比结束坐标要小。
- 一个箭头可以从x轴的不同点垂直向上射,如果Xstart<=X<=Xend,则气球会被刺破。求解最小的箭头数目可以使得所有的气球都被刺破。
- Example:Input:[[10,16], [2,8], [1,6], [7,12] Output:2
题目分析
- 从左往右投射飞镖,保证本次投飞镖能够刺破最多的气球
- 左边的气球都被刺破,才能进行下一次投射
- 算法使用:贪心算法
java编程
class Solution {
public int findMinArrowShots(int[][] points) {
if(points.length==0)return 0;
Arrays.sort(points,(a,b)->(a[1]-b[1]));
int count = 1;
int k = points[0][1];
for(int i = 1;i<points.length;i++){
if(points[i][0]<=k)
continue;
else{
count++;
k = points[i][1];
}
}
return count;
}
}