Learning python by leetcode: No.56 Merge intervals

Preview

题目及算法描述
Time complexity : O(nlgn).

code

# Definition for an interval.
# class Interval:
#     def __init__(self, s=0, e=0):
#         self.start = s
#         self.end = e

class Solution:
    def merge(self, intervals):
        """
        :type intervals: List[Interval]
        :rtype: List[Interval]
        """
        intervals.sort(key = lambda interval:interval.start)
        merged_intervals = []
        
        for interval in intervals :
            if not merged_intervals or merged_intervals[-1].end < interval.start:
                merged_intervals.append(interval)
            else:
                merged_intervals[-1].end= max(merged_intervals[-1].end, interval.end)
        
        return merged_intervals

Details

list.sort()

list.sort() is a built-in function, sorting the list in place.
sort(*, key=None, reverse=False)

定义命名的关键字参数在没有可变参数的情况下不要忘了写分隔符*,否则定义的将是位置参数。

key specifies a function of one argument that is used to extract a comparison key from each list element .

i.e.: 不是用list中的元素来排序,而是各自派个代表出来火拼, 这个代表怎么选拔呢? 就按照你指定给key的函数名, (python 是函数式编程, 类似functor or function pointer)

list.sort() is stable.

this is helpful for sorting in multiple passes (for example, sort by department, then by salary grade).

sorted

list.sort() has no return, if you want to get a new list, please use built-in function sorted()
sorted(iterable, *, key=None, reverse=False)
Return a new sorted list from the items in iterable.
sorted() is also stable.

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值