Merge intervals
合并区间
Given an array of intervals where intervals[i] = [starti, endi], merge all overlapping intervals, and return an array of the non-overlapping intervals that cover all the intervals in the input.
合并所有的overlapping intervals, 并且返回一个array
class Solution:
def merge(self, intervals: List[List[int]]) -> List[List[int]]:
if len(intervals)<2: #0 or 1
return intervals
result=[]
#sort the intervals
intervals.sort(key=lambda x: x[0])
for interval in intervals:
if len(result)==0 or result[-1][1]<interval[0]:
result.append(interval)
else:
result[-1][1]=max(result[-1][1],interval[1])
return result
(1)开始的元素进行排序。在排序的时候刚开始写的很复杂,后来发现,只要用sort 就可以了。sort和lambda的表达式相互配合,完成排序。
intervals.sort(key=lambda[x], x[0])
(2)小trick, 用result[-1]来做,随时改变result[-1]这里的元素。因此需要在len(result)==0时,直接append这个元素。