解法
class Solution {
public int findMinArrowShots(int[][] points) {
// 按气球起始边界从左往右排序
Arrays.sort(points, Comparator.comparingInt(o -> o[0]));
int result = 1;
int minRight = points[0][1];
for (int i = 1; i < points.length; i++) {
// 左边界大于最小公共右边界,需要的箭加1
if (points[i][0] > minRight) {
result++;
minRight = points[i][1];
} else {
// 重合继续求最小右边界
minRight = Math.min(minRight, points[i][1]);
}
}
return result;
}
}
网友评论