首页 > 其他分享 >排序合并区间

排序合并区间

时间:2023-12-11 15:57:43浏览次数:28  
标签:重叠 interval 合并 intervals vector 区间 排序 merged

题目

合并区间
以数组 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 <= 104
intervals[i].length == 2
0 <= starti <= endi <= 104

答案

class Solution {
public:
vector<vector> merge(vector<vector>& intervals) {
if (intervals.empty()) {
return {};
}

// 对区间按照起始位置进行排序
sort(intervals.begin(), intervals.end(), [](const vector<int>& a, const vector<int>& b) {
    return a[0] < b[0];
});

vector<vector<int>> merged;
for (const vector<int>& interval : intervals) {
    // 如果列表为空,或者当前区间与上一个区间不重叠,直接添加
    if (merged.empty() || merged.back()[1] < interval[0]) {
        merged.push_back(interval);
    } else {
        // 否则,有重叠,进行合并
        merged.back()[1] = max(merged.back()[1], interval[1]);
    }
}

return merged;

}
};

关键是要先排序,然后只要两个两个区合并就可以,不重叠就加入

标签:重叠,interval,合并,intervals,vector,区间,排序,merged
From: https://www.cnblogs.com/minipython-wldx/p/17894597.html

相关文章

  • Python语言合并列表元素常用的方法!
    众所周知,列表是Python中常见的数据类型,它可以存储多个元素。但由于某种需求,我们有时候需要将多个元素进行合并,那么Python语言如何合并列表中的元素?以下是常用方法介绍。1、使用+运算符在Python中,可以使用+运算符将两个列表的元素合并成一个新的列表。例如,假设有两个列......
  • 三维模型的顶层合并构建的模型质量提升方法探讨
    三维模型的顶层合并构建的模型质量提升方法探讨 要提升倾斜摄影超大场景的三维模型的顶层合并构建的模型数据质量,可以从以下几个方面进行优化和改进。本文将对这些方面进行分析。一、高质量原始数据的获取高质量的原始数据是保证最终模型质量的基础。在倾斜摄影过程中,应选择......
  • 将两个PDF合并成一个PDF
    将两个PDF合并成一个PDFpackagecom.oncloudsoft.zbznhc.common.util.pdf;importorg.apache.pdfbox.io.MemoryUsageSetting;importorg.apache.pdfbox.multipdf.PDFMergerUtility;importjava.io.IOException;publicclassPdfboxUtil{publicstaticvoidmergePdf......
  • 磁盘管理之磁盘合并压缩
    按Windows+R键可启动“运行框”,键入“diskmgmt.msc”并点击“Enter”。进入磁盘管理。磁盘合并(例如D盘合并E盘):1.右键单击E盘,选择“删除卷”。2.在删除了E盘后,右键点击D盘,选择“扩展卷”。3.进入“扩展卷”向导,点击“下一步”,然后选择要合并的目标分区。4.输入要扩充的空间尺......
  • MySQL 分组排序后 → 如何取前N条或倒数N条
    开心一刻晚上,老婆辅导女儿写语文作业填空题:春天来了,__绿了女儿:春天来了,爸爸绿了老婆一脸不悦地问道:你再说一遍,春天来了,什么玩意绿了?女儿:春天来了,爸爸绿了呀老婆很生气,但依旧温柔地问道:春天来了,爸爸怎么绿了呢女儿略带哭腔的说道:那冬天呢......
  • 【算法】【线性表】两个排序数组的中位数
    1 题目两个排序的数组A和B分别含有m和n个数,找到两个排序数组的中位数,要求时间复杂度应为O(log(m+n))。中位数的定义:这里的中位数等同于数学定义里的中位数。中位数是排序后数组的中间值。如果有数组中有n个数且n是奇数,则中位数为 A((n-1)/2)。如果有数组中有n个数且n......
  • 第 375 场周赛(滑动窗口,区间合并)
     使用差分的思想进行解决classSolution:defcountTestedDevices(self,batteryPercentages:List[int])->int:diff=0forxinbatteryPercentages:ifx>diff:diff+=1returndiff    clas......
  • 算法之快速排序5非递归实现
    一:概述绝大多数的递归逻辑都可以利用栈的方式去代替。代码中一层一层的方法调用,本身就是使用一个方法调用栈。每次进入一个新的方法,就相当于入栈。每次有方法返回就相当于出栈。所以,可以把原本的递归实现转换成一个栈的实现,在栈中存储每一次方法调用的参数。二:具体代码实现/*非......
  • 插入排序详解
    算法思想把数列分成两部分,前面部分为有序区,后面部分为无序区,初始时有序区只有一个元素,一个数字组成的数列当然是有序的;遍历无序区,把其中每个数不断地插入有序区,形成一个更大的有序区,遍历完成时整个数列也就有序了!学习过程思想(1)两层for循环,第一层for循环是无序区,第......
  • ts视频文件批量下载与合并
    importrequestsimportosimporttime#定义下载函数defdownload_resource(url,filename):#设置最大重试次数max_retries=3retries=0whileretries<max_retries:try:response=requests.get(url)ifrespo......