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;
}
};
相关文章
- xv6课本翻译之——第0章 操作系统接口
- oracle 函数中,一定要注意出现空记录和多条记录的处理方法
- SQL函数中的动态执行语句
- Helixoft VSdocman 是一个集成于Visual Studio并提供了命令行版本的帮助文档编译工具
- element-ui的回调函数Events的用法
- KoaHub.js -- 基于 Koa.js 平台的 Node.js web 快速开发框架之koahub
- Git 历险记(三)——创建一个自己的本地仓库
- 通过Beego将之前实现的短url项目实现
- Task 4 求数组的连续子数组的最大和(团队合作)
- Ruby使用gets的错误:gets得到的有'\n',需要使用chomp去掉