java数据结构与算法刷题目录(剑指Offer、LeetCode、ACM)-----主目录-----持续更新(进不去说明我没写完):https://blog.csdn.net/grd_java/article/details/123063846 |
---|
文章目录
解题思路:贪心算法,时间复杂度O(
n
∗
l
o
g
2
n
n*log_2n
n∗log2n)也就是快速排序需要的时间复杂度,空间复杂度O(
l
o
g
2
n
log_2n
log2n)是快速排序需要的栈空间 |
---|
- 根据题意,简单来说,重叠的区间可以用一支箭全部处理
- 而非重叠区间的数量就是需要用的箭的数量,换句话说,找到非重叠区间的个数,就是耗费弓箭的最少个数
- 因此,这道题完全变成了435题,代码几乎完全一样。
🏆LeetCode435. 无重叠区间https://blog.csdn.net/grd_java/article/details/136991398 |
---|
代码:官方增加了极端测试用例,目前只能使用这个贪心算法,以前的投机取巧的方法无法使用。因此只能击败98.21%的用户 |
---|
class Solution {
public int findMinArrowShots(int[][] points) {
if (points.length == 0) return 0;
Arrays.sort(points, new Comparator<int[]>() {
public int compare(int[] point1, int[] point2) {
if (point1[1] > point2[1]) return 1;
else if (point1[1] < point2[1]) return -1;
else return 0;
}
});
int pos = points[0][1];
int ans = 1;
for (int[] balloon: points) {
if (balloon[0] > pos) {
pos = balloon[1];
++ans;
}
}
return ans;
}
}