码迷,mamicode.com
首页 > 其他好文 > 详细

LeetCode #56 Merge Intervals

时间:2020-10-14 20:17:50      阅读:19      评论:0      收藏:0      [点我收藏+]

标签:开始   i+1   题目   匿名   problem   lis   数组   方法   solution   

题目

Merge Intervals


解题方法

由于有前置条件

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

LeetCode #56 Merge Intervals

标签:开始   i+1   题目   匿名   problem   lis   数组   方法   solution   

原文地址:https://www.cnblogs.com/RatsCommander/p/13812832.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!