首页 > 其他分享 >LeetCode 热题 100 之 56. 合并区间

LeetCode 热题 100 之 56. 合并区间

时间:2023-07-29 17:34:57浏览次数:40  
标签:重叠 56 合并 列表 intervals ls 区间 100 热题

题目

以数组 intervals 表示若干个区间的集合,其中单个区间为 intervals[i] = [starti, endi] 。请你合并所有重叠的区间,并返回 一个不重叠的区间数组,该数组需恰好覆盖输入中的所有区间 。

示例 1:

输入:intervals = [[1,3],[2,6],[8,10],[15,18]]
输出:[[1,6],[8,10],[15,18]]
解释:区间 [1,3] 和 [2,6] 重叠, 将它们合并为 [1,6].
示例 2:

输入:intervals = [[1,4],[4,5]]
输出:[[1,5]]
解释:区间 [1,4] 和 [4,5] 可被视为重叠区间。

提示:

1 <= intervals.length <= 10^4
intervals[i].length == 2
0 <= starti <= endi <= 10^4

思路

要将重叠的区间进行合并,可以先按每个区间的开头大小进行排序,排完序我们只需要对比两个区间[a1,b1] [a2,b2](a1<=a2)中b1与a2的大小关系,若a2<=b1 ,那么这两个区间肯定是重叠的,合并重叠得到的区间是[a1,max(b1,b2)]。将区间加入结果,每次比较时,将结果的最后一个区间拿出来和未合并的进行合并,合并结束再加入结果,循环,直到所有未合并的区间合并完毕

代码

class Solution:
    def merge(self, intervals: List[List[int]]) -> List[List[int]]:
        if len(intervals) == 0 :return []
#列表的sort函数
#list.sort(cmp=None, key=None, reverse=False)
#key -主要是用来进行比较的元素,即是对什么元素进行排序,此题是对列表元素(还是列表)中的第一个列表值大小进行排序。
        intervals.sort(key = lambda x:x[0])
        res = []
        res.append(intervals[0])#第一个区间直接加入答案列表
        for ls in range(1,len(intervals)):
            lastitem = res[-1]#取出答案列表中的最后一个列表进行合并
            l = intervals[ls][0] # 未合并区间的左
            r = intervals[ls][1] # 未合并区间的右
            if(l>lastitem[1]): # 如果a2>b1 则没有重叠,新加入一个区间
                res.append(intervals[ls])
            else: #a2<=b1,比较两个区间的右,取最大者
                lastitem[1]=max(r,lastitem[1]) 
        return res

标签:重叠,56,合并,列表,intervals,ls,区间,100,热题
From: https://www.cnblogs.com/anamzingclown/p/17590156.html

相关文章

  • 瑞芯微|rk3568 uart快速上手
    一、调试环境平台:rk3568kernel:4.19.232SDK:rk_android11.0_sdkBoard:rk3568-evb1-ddr4-v10二、rk3568uart控制器1.特性:rk3568UART控制器特性如下:-UART控制器通道:UART0~UART8【datasheet好像写的有问题】-包含2组64字节的FIFO,用于接收和传输-支持流控......
  • m基于FPGA的256点FFT傅里叶变换verilog实现,含testbench,不使用IP核
    1.算法仿真效果本系统进行了Vivado2019.2平台的开发,其中Vivado2019.2仿真结果如下:2.算法涉及理论知识概要傅里叶变换(FourierTransform)是一种重要的信号处理技术,用于将一个时域信号转换为频域表示,分析信号的频率成分。FFT(FastFourierTransform)是一种高效的傅里叶变换算法,可以......
  • m基于FPGA的256点FFT傅里叶变换verilog实现,含testbench,不使用IP核
    1.算法仿真效果 本系统进行了Vivado2019.2平台的开发,其中Vivado2019.2仿真结果如下:      2.算法涉及理论知识概要       傅里叶变换(FourierTransform)是一种重要的信号处理技术,用于将一个时域信号转换为频域表示,分析信号的频率成分。FFT(FastFourierT......
  • NETSDK1004:找不到资产文件
    错误信息严重性代码说明项目文件行禁止显示状态错误NETSDK1004找不到资产文件“C:\BaseContract\obj\project.assets.json”。运行NuGet包还原以生成此文件。BaseContractC:\ProgramFiles\dotnet\sdk\7.0.306\Sdks\Microsoft.NET.Sdk\targets\Microsoft.PackageDe......
  • Java 取整可以被100整除
    Java取整与被100整除的科普在Java中,我们常常需要对数字进行取整操作。而有时候,我们需要确保一个数字是100的倍数。本文将介绍Java中取整的方法以及如何确保一个数字可以被100整除。取整方法在Java中,有多种取整的方法可以使用。下面我们将介绍四种常用的取整方法。向下取整(Fl......
  • mysql启动报错:ERROR 2003 (HY000): Can't connect to MySQL server on 'localhost:330
    mysql启动报错:ERROR2003(HY000):Can'tconnecttoMySQLserveron'localhost:3306'(10061)netstat-ano|findstr3306,检查端口3306上是否有进程运行(或直接检查任务管理器中的进程),发现mysqld.exe进程未运行以管理员身份运行cmd,键入netstartmysql,遇到报错:MySQL服务......
  • 工程设计施工3D模型素材下载,全套1000+免费获取
    在建筑设计和施工过程中,3D模型数据是至关重要的。设计师和工程师需要依赖高质量的3D模型数据进行方案优化、细节设计、施工规划和质量控制。因此,如何下载高质量的3D模型数据成为了一个重要的问题。今天给大家免费提供一个“设计、施工3D模型数据下载”方法工具软件:图新说 软件......
  • uva 10061 How many zero's and how many digits ?(在不同进制下分解因子)
                             uva10061Howmanyzero'sandhowmanydigits?Givenadecimalintegernumberyouwillhavetofindouthowmanytrailingzeroswillbethereinitsfactorialinagivennumbersystemandalsoyouwillhaveto......
  • uva 156 Ananagrams(字符串+STL应用)
                         uva156AnanagramsMostcrosswordpuzzlefansareusedtoanagrams--groupsofwordswiththesamelettersindifferentorders--forexampleOPTS,SPOT,STOP,POTSandPOST.Somewordshoweverdonothavethisattribute,......
  • 深度学习用什么卡比较给力?—— A100真的么有RTX4090好吗?
    近日看到这么一个帖子:https://www.zhihu.com/question/612568623/answer/3131709693     =================================================   ......