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

56. 合并区间

时间:2023-05-10 10:56:02浏览次数:31  
标签:end 56 合并 back intervals vector result 区间

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


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

我的解法


class Solution {
public:
    vector<vector<int>> merge(vector<vector<int>>& intervals) {
        int len = intervals.size();
        if(len ==  1) return intervals;
        sort(intervals.begin(),intervals.end(),[](vector<int> &lhs,vector<int> &rhs)->bool{
            if(lhs[0] != rhs[0]){
                return lhs[0] < rhs[0];
            }
            else{
                return lhs[1] < rhs[1];
            }
        });
        vector<vector<int>> res;
        int start = intervals[0][0];
        int end = intervals[0][1];
        for(int i = 1;i < len; i++){
            if(intervals[i][0] > end){
                res.push_back({start,end});
                start = intervals[i][0];
                end = intervals[i][1];
                
            }
            else{
                end = std::max(intervals[i][1],end);
            }
            if(i == len - 1){
                res.push_back({start,end});
            }
        }
        return res;
    }
};

标准解法


class Solution {
public:
    vector<vector<int>> merge(vector<vector<int>>& intervals) {
        vector<vector<int>> result;
        if (intervals.size() == 0) return result; // 区间集合为空直接返回
        // 排序的参数使用了lambda表达式
        sort(intervals.begin(), intervals.end(), [](const vector<int>& a, const vector<int>& b){return a[0] < b[0];});

        // 第一个区间就可以放进结果集里,后面如果重叠,在result上直接合并
        result.push_back(intervals[0]); 

        for (int i = 1; i < intervals.size(); i++) {
            if (result.back()[1] >= intervals[i][0]) { // 发现重叠区间
                // 合并区间,只更新右边界就好,因为result.back()的左边界一定是最小值,因为我们按照左边界排序的
                result.back()[1] = max(result.back()[1], intervals[i][1]); 
            } else {
                result.push_back(intervals[i]); // 区间不重叠 
            }
        }
        return result;
    }
};

标签:end,56,合并,back,intervals,vector,result,区间
From: https://www.cnblogs.com/lihaoxiang/p/17387310.html

相关文章

  • C# .Net Core 合并PDF文件
    使用PdfSharpCorenuget包代码实现usingMicrosoft.AspNetCore.Razor.TagHelpers;usingPdfSharpCore.Pdf;usingPdfSharpCore.Pdf.IO;usingSystem;usingSystem.Collections.Generic;usingSystem.Linq;usingSystem.Text;usingSystem.Threading.Tasks;namespace......
  • linux下拆分PDF、批量裁剪图片及合并为PDF操作
    好久不碰代码,文件操作啥的快忘光了(你丫本来就没怎么学吧!)我先放两串代码在这QAQ拆分PDFpdftoppm-png?.pdfs批量裁剪图片裁剪图片指令,这个指令是ImageMagick带的一个什么东西,单位电脑能装convertsrc.png-crop长x高+起始像素点横坐标+起始像素低纵坐标dest.png然后......
  • 763. 划分字母区间
    给你一个字符串s。我们要把这个字符串划分为尽可能多的片段,同一字母最多出现在一个片段中。注意,划分结果需要满足:将所有划分结果按顺序连接,得到的字符串仍然是s。返回一个表示每个字符串片段的长度的列表。输入:s="ababcbacadefegdehijhklij"输出:[9,7,8]解释:划分结果......
  • 无穷区间的正弦波积分
    无穷区间的正弦波积分在傅里叶变换中,从负无穷到正无穷对正弦波进行积分得到的结果为0:\[\int_{-\infty}^{+\infty}sin(nx)dx=0\]原因在于在信号处理的公式中比如傅里叶变换,默认都以柯西主值积分,所以不存在发散的情况\[\int_{-\infty}^{+\infty}f(x)dx=\lim\limits_{M\righta......
  • 435. 无重叠区间
    给定一个区间的集合intervals,其中intervals[i]=[starti,endi]。返回需要移除区间的最小数量,使剩余区间互不重叠。输入:intervals=[[1,2],[2,3],[3,4],[1,3]]输出:1解释:移除[1,3]后,剩下的区间没有重叠。我的解法解法思路与最少数量的箭引爆气球相同,先将......
  • P47扩大节-合并节-数据目录
    合并节:法一:sizeofimage-第一个节RVA法二:最后一个节RVA-在内存中对齐后的头扩大节: 1、拉伸到内存 2、分配一块新的空间:SizeOfImage+Ex 3、将最后一个节的SizeOfRawData和VirtualSize改成N SizeOfRawData=VirtualSize=N ......
  • 当前主机存在Sudo CVE-2021-3156漏洞:Sudo1.8.23升级1.9.5p2
    Sudo权限绕过漏洞(CVE-2019-14287)Sudo缓冲区溢出漏洞(CVE-2021-3156)根据安全漏洞CVE-2021-3156,受影响的Sudo版本:Sudo版本1.7.7到1.7.10p9、1.8.2到1.8.31p2和1.9.0到1.9.5p1受到影响。sudo官网:https://www.sudo.ws/sudo下载地址:https://www.sudo.ws/getting/do......
  • 瑞芯微RK3568开发板在智慧交通行业中的应用方案
    智能交通安全监测系统是通过利用高性能处理器和先进的图像处理算法,实现对交通场景的实时监测、分析和预警,以提高交通安全水平。以下是基于RK3568处理器的智能交通安全监测系统产品的应用方案:视频采集与处理:     使用RK3568处理器搭配高清摄像头,进行交通场景的视频采集。R......
  • P1819 公共子序列 | P3856 [TJOI2008]公共子串
    简要题意给出三个由小写英文字母组成的字符串\(A,B,C\)。求这三个字符串的本质不同公共子序列个数。P1819:\(n=|A|=|B|=|C|,1\leqn\leq150\),答案对\(10^8\)取模。P3856:\(1\leq|A|,|B|,|C|\leq100\)。思路对于子序列问题,我们先建出子序列自动机。这里简单介绍一下......
  • Java 三方接口PHP写法;doHmacSHA2; 将字节数组转换成16进制字符串;Mac.getInstance;Hma
    先看一段Java代码,一个签名过程1packagecom.sixents.bss.filter;234importorg.apache.http.HttpEntity;5importorg.apache.http.NameValuePair;6importorg.apache.http.client.entity.UrlEncodedFormEntity;7importorg.apache.http.client.met......