56.合并区间

intervals = [[1,3],[15,18],[2,6],[8,10]]

intervals.sort(key=lambda x: x[0])

print(intervals) # [[1, 3], [2, 6], [8, 10], [15, 18]]

这个里面的key=lambda x : x[0]是在做什么?

在这段代码中,intervals.sort(key=lambda x: x[0]) 这行代码是对一个名为 intervals 的列表进行排序操作。这个列表包含了多个子列表,每个子列表代表一个区间,形式为 [起始点, 终点]

sort 方法是 Python 列表的一个内置方法,它用于对列表中的元素进行排序。这个方法可以接受一个名为 key 的参数,这个参数允许你指定一个函数,用于在比较操作之前对每个元素进行处理。这个函数的返回值将被用作排序的依据。

这里的 key=lambda x: x[0] 是一个 lambda 函数,它接收一个参数 x(在这里 xintervals 列表中的一个子列表),并返回 x 的第一个元素,即每个区间的起始点。这个 lambda 函数告诉 sort 方法在比较列表中的子列表时,应该使用子列表的第一个元素(即区间的起始点)作为排序的依据。

因此,当执行 intervals.sort(key=lambda x: x[0]) 后,intervals 列表中的子列表会根据每个区间的起始点进行排序。排序后的结果是 [[1, 3], [2, 6], [8, 10], [15, 18]],可以看到,这是按照区间起始点的升序排列的。

class Solution:
    def merge(self, intervals: List[List[int]]) -> List[List[int]]:
        # `sort` 方法是 Python 列表的一个内置方法,它用于对列表中的元素进行排序。
        # 这个方法可以接受一个名为 `key` 的参数,这个参数允许你指定一个函数,
        # 用于在比较操作之前对每个元素进行处理。这个函数的返回值将被用作排序的依据。
        intervals.sort(key=lambda x: x[0])

        merge = []
        for interval in intervals:
            # 如果merge为空,或者 merge的最后一个子列表的最后一个元素< 新的子列表的第一个元素
            # 则直接加入merge
            if not merge or merge[-1][-1] < interval[0]:
                merge.append(interval)
            else:
                # 这个if判断也很重要,只有<的时候,才进行替换; intervals=[[1,4], [2,3]]
                if merge[-1][-1] < interval[-1]:
                    merge[-1][-1] = interval[-1]
        return merge

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值