[LeetCode] Merge Intervals 排序sort
2024-09-28 22:00:23
这题其实想好思路很好解决,对于框,如果下个框开始在 其中间,则连在一起,否则单独为一个,这需要按start 排序便可以了,因为类中写自定义比较函数比较麻烦,所以一次写了好几个。
- 按start 排序
- 初始化变量curstart,curend,记录当前窗的位置。
- 与下个窗比较,如果其start < curend,更新 curend。
- 否则加入ret,并跟新curstart,curend
- 遍历结束,加入最后的窗。
#include <iostream>
#include <vector>
#include <algorithm>
using namespace std; /**
* Definition for an interval.
*/
struct Interval {
int start;
int end;
Interval() : start(), end() {}
Interval(int s, int e) : start(s), end(e) {}
}; class Solution {
public:
vector<Interval> merge(vector<Interval> &intervals) {
sort(intervals.begin(),intervals.end(),\
[] (Interval i1,Interval i2)\
{return i1.start<i2.start; }); /// sort(intervals.begin(),intervals.end(),help_fun); /** struct my_cmp{
bool operator ()(Interval i1,Interval i2){
return i1.start<i2.start;
}
}my_cmp1;
sort(intervals.begin(),intervals.end(),my_cmp());
sort(intervals.begin(),intervals.end(),my_cmp1);
*/ // for(int i=0;i<intervals.size();i++){
// cout<<intervals[i].start<<" "<<intervals[i].end<<endl;
// }
vector<Interval> ret;
if(intervals.size()<) return ret;
int curStart=intervals[].start,curEnd=intervals[].end;
for(int i=;i<intervals.size();i++){
if(curEnd>=intervals[i].start){
if(intervals[i].end>curEnd) curEnd=intervals[i].end;
continue;
}
ret.push_back(Interval(curStart,curEnd));
curStart = intervals[i].start;
curEnd = intervals[i].end;
}
ret.push_back(Interval(curStart,curEnd));
return ret;
} static bool help_fun(Interval i1,Interval i2)
{
return i1.start<i2.start;
}
}; int main()
{
vector<Interval> intervals={Interval(,),\
Interval(,),\
Interval(,),\
Interval(,)};
Solution sol;
vector<Interval> ret = sol.merge(intervals); for(int i=;i<ret.size();i++){
cout<<ret[i].start<<" "<<ret[i].end<<endl;
}
return ;
}
最新文章
- the pipeline of call SNP
- Mysql Communication link failure :1153 Got a packet bigger than &#39;max_allowed_packet&#39; bytes
- C#string类;math类;datetime类
- SQL SERVER获取数据库中所有表名 XTYPE类型
- 在sqlserver存储过程中给in参数传带逗号值的办法,如传&#39;1&#39;,&#39;2&#39;,&#39;3&#39;这样的
- 让mingw gdb支持STL,并自动load .gdbinit
- 批量Load/Store指令的寻址方式
- AE实现点击一个要素,并显示其属性
- httphandler与httpmodule区别
- 【有源汇上下界最大流】ZOJ 3229 Shoot the Bullet
- ZOJ 2675 Little Mammoth(计算几何)
- 记一次坑die(误)的题目--HDU2553--(DFS)
- nested query for ";pat2"; table
- .net core中使用GB2312编码的问题
- 【ASP.NET】website转webapplication
- 68.jq---tab选项实现网页定点切换
- YOLO V2 代码分析
- Python requests代理
- Unity AssetBundle打包资源工具
- 我的border能自定义四角之border-radius : 左上角,右上角,左下角,右下角。