merge-intervals 合并区间
Given a collection of intervals, merge all overlapping intervals.
For example,
Given[1,3],[2,6],[8,10],[15,18],
return[1,6],[8,10],[15,18].
合并有重叠的区间,且原区间序列无序
/** * 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 compare(const Interval &first,const Interval &second) { if(first.start==second.start) return first.end<second.end; else return first.start<second.start; } vector<Interval> merge(vector<Interval> &intervals) { vector<Interval> ret; int n=intervals.size(); int pre=0, cur=0; sort(intervals.begin(),intervals.end(),compare); while(cur<n) { while(cur<n&&intervals[pre].end>=intervals[cur].start) { intervals[pre].start=min(intervals[pre].start,intervals[cur].start); intervals[pre].end=max(intervals[pre].end,intervals[cur].end); cur++; } ret.push_back(intervals[pre]); pre=cur; } return ret; } };
思路:先按照[0]来排序,然后将intervals[0]塞入res,遍历intervals,如果res.back()[1]>=intervals[i][0],则res.back()[1]=max(res.back()[1],intervals[i][1]),因为可能会有[1,4],[2,3]合并。
class Solution { public: vector<vector<int>> merge(vector<vector<int>>& intervals) { vector<vector<int>> res; if(intervals.size()<1) return res; sort(intervals.begin(), intervals.end()); res.push_back(intervals[0]); for(int i=1;i<intervals.size();++i) { if(res.back()[1]>=intervals[i][0]) res.back()[1]=max(res.back()[1], intervals[i][1]); else res.push_back(intervals[i]); } return res; } };
联系方式:emhhbmdfbGlhbmcxOTkxQDEyNi5jb20=
分类:
leetcode
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· 没有源码,如何修改代码逻辑?
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 记一次.NET内存居高不下排查解决与启示
· DeepSeek 开源周回顾「GitHub 热点速览」
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
2017-09-13 #pragma pack(push,1)与#pragma pack(1)的区别(转)
2017-09-13 23种设计模式(9):访问者模式(转)
2017-09-13 RTTI机制与作用(转)
2017-09-13 C++ 代码风格准则:POD
2017-09-13 最小二乘法
2017-09-13 Python进阶---python strip() split()函数实战(转)