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