o2o平台有哪些网站,浙江网站建设哪里有,广元市住房与城乡建设厅网站,广西壮族自治区警官学校1. 题目
在二维空间中有许多球形的气球。对于每个气球#xff0c;提供的输入是水平方向上#xff0c;气球直径的开始和结束坐标。 由于它是水平的#xff0c;所以y坐标并不重要#xff0c;因此只要知道开始和结束的x坐标就足够了。 开始坐标总是小于结束坐标。平面内最多存…1. 题目
在二维空间中有许多球形的气球。对于每个气球提供的输入是水平方向上气球直径的开始和结束坐标。 由于它是水平的所以y坐标并不重要因此只要知道开始和结束的x坐标就足够了。 开始坐标总是小于结束坐标。平面内最多存在104个气球。
一支弓箭可以沿着x轴从不同点完全垂直地射出。 在坐标x处射出一支箭若有一个气球的直径的开始和结束坐标为 xstartxend 且满足 xstart ≤ x ≤ xend则该气球会被打破。 可以射出的弓箭的数量没有限制。 弓箭一旦被射出之后可以无限地前进。 我们想找到使得所有气球全部被打破所需的弓箭的最小数量。
Example:
输入:
[[10,16], [2,8], [1,6], [7,12]]
输出:
2
解释:
对于该样例我们可以在x 6射爆[2,8],[1,6]两个气球和 x 11射爆另外两个气球。来源力扣LeetCode 链接https://leetcode-cn.com/problems/minimum-number-of-arrows-to-burst-balloons 著作权归领扣网络所有。商业转载请联系官方授权非商业转载请注明出处。 2. 解题
按照右端点排序第一支箭从第一个的右端点射出找到不能相交的再取一支箭从不相交的那个的右端点射出循环往复
class Solution {
public:int findMinArrowShots(vectorvectorint points) {if(points.empty()) return 0;sort(points.begin(), points.end(),[](auto a, auto b){return a[1] b[1];//按右端点排序});int i 0, pos points[0][1], count 1;while(i points.size()){while(i points.size() points[i][0] pos)i;if(i points.size())//不相交的气球{count;pos points[i][1];//从其右端点出发}}return count;}
};1640 ms 157.4 MB