题目描述
AC代码
class Solution {
public int findMinArrowShots(int[][] points) {
if (points.length == 0) return 0;
// 根据每个气球的结束坐标进行排序
Arrays.sort(points, new Comparator<int[]>() {
@Override
public int compare(int[] o1, int[] o2) {
return o1[1] - o2[1];
}
});
//只要存在一个区间,就至少有1根剑
int res = 1;
//上一个气球的结束坐标,初始时就是第一个气球的结束坐标
int firstEnd = points[0][1];
for (int[] p : points) {
// 如果当前气球的开始坐标在上一个气球的结束坐标后面,那就需要多一个箭
if (firstEnd < p[0]) {
res++;
firstEnd = p[1];
}
}
return res;
}
}