博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
leetcode 区间合并
阅读量:5064 次
发布时间:2019-06-12

本文共 1020 字,大约阅读时间需要 3 分钟。

个区间若能合并,则第一个区间的右端点一定不小于第二个区间的左端点。所以先把区间集合按照左端点从小到大进行排序,接着从第一个区间开始遍历,对每个区间执行如下操作:

1.首先保存该区间的左端点start和右端点end;

2.从该区间的下一个区间开始,依次比较此区间的左端点与上一个区间的右端点,若满足合并条件则记录新合并区间的右端点。注意右端点取当前区间与之前区间右端点的较大值;

3.若当前区间不再满足合并条件或者遍历到了集合末尾,就构建新合并区间,其中左端点为初始区间的左端点,右端点为当前所有合并区间右端点的最大值,然后将其加入到结果集合中,接着合并下一个区间;

# Definition for an interval.# class Interval:#     def __init__(self, s=0, e=0):#         self.start = s#         self.end = eclass Solution(object):    def merge(self, intervals):        """        :type intervals: List[Interval]        :rtype: List[Interval]        """        if intervals == []:            return []        intervals = sorted(intervals,key=lambda x:x.start)        res = []        tmp = intervals[0]        for i in range(1,len(intervals)):            if tmp.end >= intervals[i].start:                tmp.end = max(tmp.end,intervals[i].end)            else:                res.append(tmp)                tmp = intervals[i]        res.append(tmp)        return res

 

转载于:https://www.cnblogs.com/USTC-ZCC/p/10635293.html

你可能感兴趣的文章
html 简介
查看>>
python使用上下文对代码片段进行计时,非装饰器
查看>>
【bzoj5099】[POI2018]Pionek 双指针法
查看>>
别让安全问题拖慢了 DevOps!
查看>>
session如何保存在专门的StateServer服务器中
查看>>
react展示数据
查看>>
测试计划
查看>>
选择器
查看>>
Mysql与Oracle 的对比
查看>>
阅读笔记02
查看>>
mySQL 教程 第7章 存储过程和函数
查看>>
OGG同步Oracle到Kafka(Kafka Connect Handler)
查看>>
算法笔记_056:蓝桥杯练习 未名湖边的烦恼(Java)
查看>>
idea的maven项目无法引入junit
查看>>
jquery实现限制textarea输入字数
查看>>
thinkphp5 csv格式导入导出(多数据处理)
查看>>
如何获取Android系统时间是24小时制还是12小时制
查看>>
fur168.com 改成5917电影
查看>>
PHP上传RAR压缩包并解压目录
查看>>
codeforces global round 1题解搬运
查看>>