NC37:合并区间
NC37:合并区间
- 1、题目描述:
-3、 设计思想:
详细操作流程看下图
- 代码:
c++版本:
/**
* Definition for an interval.
* struct Interval {
* int start;
* int end;
* Interval() : start(0), end(0) {}
* Interval(int s, int e) : start(s), end(e) {}
* };
*/
class Solution {
public:
//定义排序规则,按照区间的左端点排序
static bool cmp(const Interval &a,const Interval &b){
return (a.start<b.start);
}
vector<Interval> merge(vector<Interval> &intervals) {
sort(intervals.begin(),intervals.end(),cmp);//排序
vector<Interval>res;//返回的结果数组
int i = 0,n = intervals.size();
int l,r;
while(i < n){
l = intervals[i].start;//用来存储当前区间的左端
r = intervals[i].end; //用来存储当前区间的右端
//合并区间
while(i < n-1 && r >= intervals[i + 1].start){
i ++;
r = max(r,intervals[i].end);
}
//将当前合并完的区间进行插入
res.push_back({l,r});
i ++;
}
剩余60%内容,订阅专栏后可继续查看/也可单篇购买
前端岗位面试真题宝典 文章被收录于专栏
本面试宝典均来自校招面试题目大数据进行的整理