LeetCode56——Merge Intervals

LeetCode56——Merge Intervals

题意:

简单理解就是对区间序列做高中数学里面的并运算。

现在假设几种情况:

[1,2]∪[3,4]的并集表示就是{ [1,2]∪[3,4] } 即,无交集集合的并运算

[1,3]∪[2,4]的并集表示就是{ [1,4] } 即,有交集集合的并运算

[1,4]∪[2,3]的并集表示就是{ [1,4] } 即,有包含关系的集合的并运算


综合上述三种情况:

1.第二种和第三种是可以合并的。根据这两种情况,编写可以合并的代码,对整个序列遍历合并。

2.在此之前需要对序列中的元素按照start的值从小到大排序。

结合上述1.2代码如下:

bool cmp(const Interval &a, const Interval &b)
{
	return a.start < b.start;
}
class Solution {
private:
	bool canMerge(Interval &a, Interval &b)//可以合并的情况
	{
		if (a.end >= b.start&&a.end<=b.end)
		{
			a.end = b.end;
			return true;
		}
		else if (a.end > b.end)
		{
			return true;
		}
		return false;
	}
public:
	vector merge(vector& intervals) {
		int i = 0;
		int j;
		vectorresult;
		sort(intervals.begin(), intervals.end(),cmp);
		while (i < intervals.size())
		{
			j = i+1;
			while (j




你可能感兴趣的:(leetcode)