其他分享
首页 > 其他分享> > 56_57. 合并插入区间

56_57. 合并插入区间

作者:互联网

56. 合并区间

->用sort()函数排序:按a[0],a[1]大小排序
  判断区间重叠:eg- a=[1,4] b=[2,3]
                       a[1]>b[0]
                       左边位置为a[0],右边位置为max(a[1],b[1])
                       所以区间是[1,4]
-<代码:
class Solution:
    def merge(self, intervals: List[List[int]]) -> List[List[int]]:
        intervals.sort()
        res = [intervals[0]]
        for x,y in intervals[1:]:
            if res[-1][1]<x:
                res.append([x,y])
            else:
                res[-1][1]=max(y,res[-1][1])
        return res

 

#双指针解法
class Solution:
    def merge(self, intervals: List[List[int]]) -> List[List[int]]:
        intervals.sort()   #排序列表,以区间开头升序排列
        ans = [intervals[0]]
        L, R = 1, 0
        while L < len(intervals):
            if ans[R][1] < intervals[L][0]:   #如果区间不重合,直接append
                ans.append(intervals[L])
                L += 1
                R += 1
            else:      #如果区间重合,就合并区间
                ans[R] = [ans[R][0], max(ans[R][1], intervals[L][1])]
                L += 1
        return ans
57. 插入区间
class Solution:
    def insert(self, intervals: List[List[int]], newInterval: List[int]) -> List[List[int]]:
        intervals.append(newInterval)
        intervals.sort()
        res = [intervals[0]]
        for x,y in intervals[1:]:
            if res[-1][1]<x:
                res.append([x,y]) #以数组的形式存储
            else:
                res[-1][1]=max(y,res[-1][1]) #比较b[1]和a[1]
        return res

 

 

标签:int,res,57,56,List,插入,intervals,ans,区间
来源: https://www.cnblogs.com/blogy-y/p/16532376.html