leetcode个人题解——#56 Merge Intervals

思路,先按照结构体中start进行排序,然后遍历比较前后项是否有重合。

第一次用到三参数形式的sort(),第三个参数的bool函数要写到类外才通过。

/**
* Definition for an interval.
* struct Interval {
* int start;
* int end;
* Interval() : start(0), end(0) {}
* Interval(int s, int e) : start(s), end(e) {}
* };
*/
bool cmp(Interval a, Interval b){
return a.start < b.start;
}
class Solution {
public: vector<Interval> merge(vector<Interval>& intervals) {
const int Size = intervals.size();
if(Size <= ) return intervals;
vector<Interval> ans;
Interval temp;
vector<bool>visited(Size,false);
sort(intervals.begin(), intervals.end(),cmp);
temp = intervals[];
for(int i = ; i < Size - ; i++)
{
if((visited[i] &&temp.end >= intervals[i + ].start) || intervals[i].end >= intervals[i + ].start){
int m = min(intervals[i].start, intervals[i + ].start);
int M = max(intervals[i].end, intervals[i + ].end);
temp.start = min(m, temp.start);
temp.end = max(M, temp.end);
visited[i + ] = true;
visited[i] = true;
}
else{
if(visited[i]) ans.push_back(temp);
else ans.push_back(intervals[i]);
temp = intervals[i + ];
}
}
if(visited[Size - ]) ans.push_back(temp);
else ans.push_back(intervals[Size - ]);
return ans;
}
};
上一篇:自动化扫描src漏洞


下一篇:Jquery EasyUI Base基础