博客域名:
http://www.xnerv.wang
原题页面: https://oj.leetcode.com/problems/merge-intervals/
题目类型:
难度评价:★
本文地址: http://blog.youkuaiyun.com/nerv3x3/article/details/3465927
原题页面: https://oj.leetcode.com/problems/merge-intervals/
题目类型:
难度评价:★
本文地址: http://blog.youkuaiyun.com/nerv3x3/article/details/3465927
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]
.
合并相连的区间。基本思路是,首先按起点start对所有区间排序,然后通过一次遍历来合并相连的区间。
class Interval:
def __init__(self, s=0, e=0):
self.start = s
self.end = e
class Solution:
# @param intervals, a list of Interval
# @return a list of Interval
def merge(self, intervals):
if len(intervals) <= 1:
return intervals
intervals.sort(lambda x, y: cmp(x.start, y.start))
new_intervals = [ ]
last_interval = intervals[0]
for i in range(1, len(intervals)):
if intervals[i].start >= last_interval.start and intervals[i].start <= last_interval.end:
if intervals[i].end >= last_interval.start and intervals[i].end <= last_interval.end:
pass
else:
last_interval.end = intervals[i].end
else:
new_intervals.append(last_interval)
last_interval = intervals[i]
new_intervals.append(last_interval)
return new_intervals