leetcode 56:Merge Intervals

原创 2015年11月18日 19:27:35

题目:

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].

struct Interval {
	int start;
	int end;
	Interval() : start(0), end(0) {}
	Interval(int s, int e) : start(s), end(e) {}
};

思路:

可以先对集合进行排序,时间复杂度:O(nlgn)

然后依次将end大于下一个start的集合合起来,知道出现end小于下一个start,将新的集合push到结果中。

注意边界条件,即下一个集合是前一个的子集的情况。时间复杂度:O(n)

总时间复杂度为:O(nlgn)

实现如下:

class Solution {
public:
	static bool comp(const Interval a, const Interval b)
	{
		return a.start < b.start ? 1 : 0;
	}
	vector<Interval> merge(vector<Interval>& intervals) {
		vector<Interval> result;
		int size = intervals.size();
		if (size < 2) return intervals;
		sort(intervals.begin(), intervals.end(), comp);
		for (int i = 0; i<size; ++i)
		{
			Interval temp(intervals[i].start, intervals[i].end);
			int high = intervals[i].end;
			while (i < size - 1 && high >= intervals[i + 1].start)
			{
				if (intervals[i + 1].end > high) high = intervals[i + 1].end;
				++i;
			}
			temp.end = high;
			result.push_back(temp);
		}
		return result;
	}
};

注意:本题对sort的使用。由于sort第三个参数对应函数的地址,如果函数不加上static,则会报错。

版权声明:本文为博主原创文章,未经博主允许不得转载。

leetCode 56.Merge Intervals (合并区间) 解题思路和方法

Merge Intervals  Given a collection of intervals, merge all overlapping intervals. For example...
  • xygy8860
  • xygy8860
  • 2015年07月15日 14:06
  • 1360

LeetCode OJ算法题(五十五):Merge Intervals

题目: Given a collection of intervals, merge all overlapping intervals. For example, Given [1...
  • op_yu
  • op_yu
  • 2014年08月08日 21:12
  • 299

【LeetCode-面试算法经典-Java实现】【056-Merge Intervals(区间合并)】

【056-Merge Intervals(区间合并)】【LeetCode-面试算法经典-Java实现】【所有题目目录索引】原题  Given a collection of intervals, me...
  • DERRANTCM
  • DERRANTCM
  • 2015年07月29日 06:51
  • 3258

leetCode练习(56)

题目:Merge Intervals 难度:hard 问题描述: Given a collection of intervals, merge all overlapping interva...
  • u010771890
  • u010771890
  • 2016年10月10日 19:44
  • 94

Merge Intervals 这个应该叫合并间隙?

leetcode上的原题: Given a collection of intervals, merge all overlapping intervals. For example, Give...
  • a237828879
  • a237828879
  • 2015年03月23日 17:20
  • 257

15.4—细节实现题—Merge Intervals

描述 Given a collection of intervals, merge all overlapping intervals. For example, Given [1,3],[2,6],...
  • seu_nuaa_zc
  • seu_nuaa_zc
  • 2017年08月12日 12:54
  • 126

56. Merge Intervals 对区间进行合并

Given a collection of intervals, merge all overlapping intervals. For example, Given [1,3],[2,6]...
  • u010005161
  • u010005161
  • 2016年09月03日 22:50
  • 126

<LeetCode> 题56:两数之和

1. 题目描述:给一个整数数组,找到两个数使得他们的和等于一个给定的数 target。你需要实现的函数twoSum需要返回这两个数的下标, 并且第一个下标小于第二个下标。注意这里下标的范围是 1 到 ...
  • u013003827
  • u013003827
  • 2016年07月19日 09:53
  • 374

ZOJ 1508 Intervals (差分约束系统)

思路:根据题意建图、然后用SPFA跑一遍 最开始用Bellman_Ford、果断超时了。。。还是把代码贴出来 #include #include #include #define INF 0x7fff...
  • verticallimit
  • verticallimit
  • 2014年04月24日 08:07
  • 816

LeetCode题解——Intervals相关题总结

1.Merge Intervals Given a collection of intervals, merge all overlapping intervals. For exampl...
  • u010025211
  • u010025211
  • 2016年06月02日 09:34
  • 412
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:leetcode 56:Merge Intervals
举报原因:
原因补充:

(最多只允许输入30个字)