标签:开始 i+1 题目 匿名 problem lis 数组 方法 solution
由于有前置条件
intervals[i][0] <= intervals[i][1]
所以可以想到通过intervals.sort()增加一个前置条件:
intervals[i][0] <= intervals[i+1][0], 0 <= i < len(intervals)-1
这样一来就把所有左端都排序好了,从头开始遍历数组时,只需要考虑右端的大小关系,选择max设置为新的右端即可实现合并。
值得注意的是list.sort()方法可以实现嵌套列表的排序,默认是按照所有嵌套列表的第一位大小关系排序,可以利用匿名函数实现按照第二位、第三位...等进行排序,如
intervals.sort(key=lambda x: x[2])
class Solution:
def merge(self, intervals: List[List[int]]) -> List[List[int]]:
intervals.sort()
i = 0
while i < len(intervals) - 1:
if intervals[i+1][0] <= intervals[i][1]:
left = intervals[i][0]
right = max(intervals[i][1], intervals[i+1][1])
intervals.pop(i)
intervals[i][0] = left
intervals[i][1] = right
else:
i += 1
return intervals
标签:开始 i+1 题目 匿名 problem lis 数组 方法 solution
原文地址:https://www.cnblogs.com/RatsCommander/p/13812832.html