leetcode 每日一题 57. 插入区间

遍历添加

思路:

由于原数组有序,可以遍历把要添加区间之前的区间先加入到结果中,在判断要添加的区间是否能和之前合并,接着继续遍历之后区间,如果能合并就合并区间,不能合并直接添加。合并区间方法,参考56.合并区间

 

代码:

class Solution:
    def insert(self, intervals: List[List[int]], newInterval: List[int]) -> List[List[int]]:
        new_start, new_end = newInterval[0],newInterval[1]
        idx, n = 0, len(intervals)
        res = []
        while idx < n and new_start > intervals[idx][0]:
            res.append(intervals[idx])
            idx += 1
        if not res or res[-1][1] < new_start:
            res.append(newInterval)
        else:
            res[-1][1] = max(res[-1][1], new_end)
        while idx < n:
            interval = intervals[idx]
            start, end = interval[0],interval[1]
            idx += 1
            if res[-1][1] < start:
                res.append(interval)
            else:
                res[-1][1] = max(res[-1][1], end)
        return res

 

posted @ 2020-06-05 12:34  nil_f  阅读(131)  评论(0编辑  收藏  举报