leetcode.array--57. Insert Interval

题目:57. Insert Interval

题目链接:https://leetcode.com/problems/insert-interval/description/

这个题呀跟上一个差不多,题目给定了若干个区间,这些区间已经按照start升序排序,要求呢将给出的新区间插进去,返回新区间插入合并的结果。

因为已经排好序了嘛,应该是分情况讨论+遍历吧。但是我把上个题的代码复制过来了,没有重新写再见

Python:

# Definition for an interval.
# class Interval(object):
#     def __init__(self, s=0, e=0):
#         self.start = s
#         self.end = e
from operator import attrgetter
class Solution(object):
    def insert(self, intervals, newInterval):
        """
        :type intervals: List[Interval]
        :type newInterval: Interval
        :rtype: List[Interval]
        """
        def merge(intervals):
            length = len(intervals)
            if length == 0:
                return []
            if length < 2:
                return [intervals[0]]
            intervals.sort(key=attrgetter("start"))
            res = []
            res.append(intervals[0])
            rear = 0
            for i in range(1, length):
                if intervals[i].start <= res[rear].end:
                    if intervals[i].end > res[rear].end:
                        res[rear].end = intervals[i].end
                else:
                    res.append(intervals[i])
                    rear += 1
            return res
        intervals.append(newInterval)
        return merge(intervals)


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值