leetcode 56

题意:

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. 先将区间按照每个start的值来排序,(所给数据是乱序)
  2. 排好序以后判断一个区间的start值是否处在前一个区间中,如果在前一个区间中,那么合并;如果不在,就将新区间添加。
1
2
3
4
5
6
7
8
def merge(self, intervals):
out = []
for i in sorted(intervals, key=lambda i: i.start):
if out and i.start <= out[-1].end:
out[-1].end = max(out[-1].end, i.end)
else:
out += i,
return out

https://zhuanlan.zhihu.com/p/33114095

总结:

  1. sorted 函数
    http://www.runoob.com/python/python-func-sorted.html
  2. lambda 表达式
    https://www.jianshu.com/p/9f306285a3ca