详见官方题解。按照左端排序,如果新的元素的左端点大于当前的右端点,纳入当前。如果新的元素的左端点小于当前的右端点,可以合并,当前的右端点更新为当前和新元素右端点的最大值。
这里主要是有一些二维数组相关的写法要注意一下。
1.二维数组按第一列排序
arr = [[5, 2, 6], [1, 4, 3], [9, 8, 7]]
sorted_arr = sorted(arr, key=lambda x: x[0])
print(sorted_arr)
2.-1的含义:在Python中,-1用作索引时,它指的是列表的最后一个元素。
array_2d[-1]:这访问的是最外层列表的最后一个元素,即[7, 8, 9]。array_2d[-1][1]:这进一步访问上述子列表中的第二个元素,即8。
1 class Solution(object): 2 def merge(self, intervals): 3 """ 4 :type intervals: List[List[int]] 5 :rtype: List[List[int]] 6 """ 7 intervals = sorted(intervals, key=lambda x: x[0]) 8 res = [] 9 for interval in intervals: 10 if not res or res[-1][1] < interval[0]: 11 res.append(interval) 12 else: 13 res[-1][1] = max(res[-1][1], interval[1]) 14 return res 15 16