首页 > 其他分享 >56. 合并区间(中)

56. 合并区间(中)

时间:2024-03-02 20:33:05浏览次数:25  
标签:interval int 合并 56 List intervals ans 区间

目录

题目

  • 以数组 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] 可被视为重叠区间。

法一、排序+讨论

  • 三种情况:不相交,包含,相交
class Solution:
    def merge(self, intervals: List[List[int]]) -> List[List[int]]:
        if not intervals:
            return []
        intervals.sort(key=lambda x: x[0])
        res = []
        res.append(intervals[0])  # 将第一个区间添加到结果列表中
        for interval in intervals[1:]:#从第二个列表开始遍历
            if interval[0] > res[-1][1]:  #比较21与12,不相交的情况,直接将当前区间添加到结果列表中
                res.append(interval)
            elif interval[1] <= res[-1][1]:  # 包含的情况,不进行任何操作
                continue
            else:  # 相交的情况,更新结果列表中最后一个区间的结束位置
                res[-1][1] = interval[1]
        return res

法二、简洁

  • 题解上大家的答案,用时和内存低于上一个版本
class Solution:
    def merge(self, intervals: List[List[int]]) -> List[List[int]]:
        intervals.sort()
        ans = [intervals[0]]
        for s, e in intervals[1:]:#s表示当前区间左端点,e表示当前区间右端点
            if ans[-1][1] < s:
                ans.append([s, e])
            else:
                ans[-1][1] = max(ans[-1][1], e)
        return ans

标签:interval,int,合并,56,List,intervals,ans,区间
From: https://www.cnblogs.com/lushuang55/p/18048760

相关文章

  • CF1856E1 PermuTree (easy version) 题解
    假定当前在节点\(u\),它拥有两棵子树\(v,w\),此时\(u\)是\(\operatorname{lca}(v,w)\)。我们一定可以构造出一个排列\(a\),使得所有满足\(i\inv\)的节点\(i\)和满足\(j\inw\)的节点\(j\),有\(a_i<a_u<a_j\)。因此此时点\(u\)对于答案的贡献即为\(size_v\times......
  • [python]将多张图片合并为单个pdf文件
    前言最近有个个人需求是要把多个图片文件合并为一个PDF文件,这样方便用PDF阅读器连续看,避免界面点一下,只会图片放大。(比如看漫画)主要思路是先把单张图片转换成单个PDF文件,然后把PDF文件进行合并。原先是用WPS的转换工具做的,但WPS每次只能批量转换30张,如果有大量图片文件,用WPS就不......
  • Git 分支-查看&创建&切换&合并&合并冲突的解决
     gitbranch-v可以用来查看分支gitbranchxxx可以创建出xxx的分支名 gitcheckoutnew_branch1切换到new_branch1上来然后可以针对这个分支对文件进行修改和提交,如下所示 如果此时切换到master中来,发现文件又恢复到原始master的初始的样子,如下所示。所以修改......
  • 利用表达式树合并对象
    js我们常用这种写法{...a,...b}C#中有时候也需要这样写,比如使用EFCore查询单表,又需要从另一张表取两个字段,两张表的字段合并到一个对象里面,最后返回一个集合典型的就是b表只存了外键人员id,需要查询a表和a表中外键对应的姓名比如student{studentName,sid},学生表course ......
  • R语言GAMLSS模型对艾滋病病例、降雪量数据拟合、预测、置信区间实例可视化|附代码数据
    全文链接:http://tecdat.cn/?p=31996原文出处:拓端数据部落公众号最近我们被客户要求撰写关于GAMLSS的研究报告,包括一些图形和统计输出。GAMLSS模型是一种半参数回归模型,参数性体现在需要对响应变量作参数化分布的假设,非参数性体现在模型中解释变量的函数可以涉及非参数平滑函数,......
  • 线段树合并小结
    权值线段树就是把线段树变成桶。用线段树维护桶。代码:模板:P1138第k小整数#include<bits/stdc++.h>usingnamespacestd;intn,k;structsegmentTree{ structnode{ intsum; }tr[40000<<2]; #definelidnow<<1 #defineridnow<<1|1 voidupdate(intnow,intl......
  • bat合并下载缓存文件
    ::进入当前bat文件所在目录cd%cd%@echooffsetlocalENABLEDELAYEDEXPANSION::设置数组obj的值setobjLentth=2setobj[0]=test1setobj[1]=test2@echo!obj[0]!@echo!obj[1]!setobjIndex=0::===在这里设置你的后缀名sethouzhui=.jpg.gif.png.m4s::===......
  • CF756D Bacterial Melee 题解
    给一个\(O(n^2)\)的做法。考虑从左到右扫描最终得到的字符串,如果当前的字符和前一个字符相同,就删掉这个字符。由题意可知,最终得到的字符串一定是\(s\)的一个子序列。我们定义状态\(dp[i][j]\)表示:当前子序列的最后一个字符是\(s[i]\),已经填完了最终字符串的前\(j\)个字......
  • P5605 小 A 与两位神仙 题解
    推销博客P5605小A与两位神仙题意给定\(x\)、\(y\)和\(m\),其中\(m=p^n,n\in\mathbb{N+},p\ge3\),问同余方程\(x^a\equivy\pmodm\)是否有非负整数解。分析前置芝士Pollard_rho原根化简对这种指数型的同余方程是很难解决的,我们要先把它转化成线性的同余方......
  • 线段树合并
    线段树合并1权值线段树1.1权值线段树的基本思想权值线段树其实比较简单。正常的线段树是维护区间上每一个点的值,而权值线段树则是维护每一个数字出现的次数(可以类比为桶)。例如原本的$1-4$表示区间$[1,4]$上数字的和(或差、最大值等等),现在就表示数字$1-4$的出现次数之......