class Solution {
public:
// 先按照起始位置排序
static bool cmp(vector<int> a, vector<int> b) {
return a[0] < b[0];
}
int findMinArrowShots(vector<vector<int>>& points) {
if (points.size() == 0) return 0;
sort(points.begin(), points.end(), cmp);
// 有零用例的情况已经排除,接下来至少需要用一支箭
int res = 1;
for (int i = 1; i<points.size(); i++) {
// 左边界大于上一个右边界,肯定要加一次射箭
if (points[i][0] > points[i-1][1])
res++;
// 否则重叠,更新右边界为重叠部分较短的右边界
else {
points[i][1] = min(points[i][1], points[i-1][1]);
}
}
return res;
}
};
相关文章
- Tars | 第6篇 基于TarsGo Subset路由规则的Java JDK实现方式(下)
- 本人制作的股票技术分析软件正式开源(.net wpf)
- 科学史上非常伟大的十位单身科学家 - Honey_Badger
- 时钟信号和复位信号的来源
- Webdings字体、Wingdings字体对照表、用CSS3绘制的各种小图标
- CSS 中规定的五种一般字体家族
- USB2.0、USB3.0、e-sata接口之间的实际传输速度!
- 本地模拟服务器CDN(静态HTML,CSS,JS)开发 - 龙恩0707
- n2n的编译和运行、配置
- 特征提取的综合实验(多种角度比较SIFT、SURF、BRISK、ORB、FREAK等局部特诊点检测和描述算法)(版)