
思路
先根据每个区间的第2个值排序,然后从后往前,如果i区间的左小于等于i-1区间的右,则合并到i-1位置,并删除原来i位置的区间,依此类推。
代码
class Solution:
def merge(self, intervals: List[List[int]]) -> List[List[int]]:
intervals = sorted(intervals,key=lambda x:x[1])
for i in range(len(intervals)-1,0,-1):
if intervals[i][0]<=intervals[i-1][1]:
#重写i-1区间的左和右
intervals[i-1][1] =max(intervals[i][1],intervals[i-1][1])
intervals[i-1][0] =min(intervals[i][0],intervals[i-1][0])
intervals.pop(i) #删除i区间
return intervals

236

被折叠的 条评论
为什么被折叠?



