LeetCode56. 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].
题目分析:很简单的一道题,首先先给这些间隔排序,按照首数字最大来从小到大排序
然后遇到
if (intervals[i].start <= tmp.end&&intervals[i].start >= tmp.start) {
res[index].start = tmp.start;
res[index].end = intervals[i].end > tmp.end ? intervals[i].end :tmp.end;
tmp = res[index];
}然后进行合并,其余保留。
代码如下
bool comp(Interval a, Interval b) {
return a.start<b.start;
}
class Solution {
public:
vector<Interval> merge(vector<Interval>& intervals) {
sort(intervals.begin(), intervals.end(), comp);
vector<Interval> res;
Interval tmp;
if (intervals.empty()) return res;
tmp = intervals[0];
int index = 0;
res.push_back(tmp);
for (int i = 1; i < intervals.size(); i++) {
if (intervals[i].start <= tmp.end&&intervals[i].start >= tmp.start) {
res[index].start = tmp.start;
res[index].end = intervals[i].end > tmp.end ? intervals[i].end :tmp.end;
tmp = res[index];
}
else {
res.push_back(intervals[i]);
tmp = intervals[i];
index++;
}
}
return res;
}
};
本文介绍了一种解决LeetCode上第56题“合并区间”的方法。通过对给定的区间进行排序,并使用一个临时变量来判断是否需要合并区间,实现了将所有重叠的区间合并为一个区间的功能。
516

被折叠的 条评论
为什么被折叠?



