合并区间--Merge Intervals

https://leetcode.com/problems/merge-intervals/

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

题意:合并简化区间列

 

 1 # Definition for an interval.
 2 # class Interval:
 3 #     def __init__(self, s=0, e=0):
 4 #         self.start = s
 5 #         self.end = e
 6 
 7 class Solution:
 8     # @param {Interval[]} intervals
 9     # @return {Interval[]}
10     def merge(self, intervals):
11         intervals.sort(key=lambda x:x.start)                                #注意形式,按区间左边数排序
12         length=len(intervals)                                               #区间总个数
13         res=[]
14         for i in range(length):                                             #用i对每一个区间依次遍历,进行处理                      
15             if res==[]:                                                     #第一个区间直接加入
16                 res.append(intervals[i])
17             else:
18                 size=len(res)                                               #找到已有区间列res的最后一个区间res[size-1]
19                 if res[size-1].start<=intervals[i].start<=res[size-1].end:  #别忘了两边的等号
20                     res[size-1].end=max(intervals[i].end,res[size-1].end)   #只更新右区间,左仍用res[size-1].start
21                 else:
22                     res.append(intervals[i])                                #若左区间不包含在前一个区间里,则直接加入
23         return res

 

 

 

 

posted @ 2015-07-03 11:22  小榛子  阅读(222)  评论(0编辑  收藏  举报