力扣56.合并区间

news2024/9/21 16:38:23

文章目录

  • 力扣56.合并区间
    • 题目描述
    • 排序合并

力扣56.合并区间

题目描述

以数组 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

排序合并

排序合并的思想力扣官方的解答蛮好的,可以直接点下面链接看一下,这里我偷个懒只提供官方没有给出的C语言代码实现:
力扣官方思路链接

官解搬运:
如果我们按照区间的左端点排序,那么在排完序的列表中,可以合并的区间一定是连续的。如下图所示,标记为蓝色、黄色和绿色的区间分别可以合并成一个大区间,它们在排完序的列表中是连续的:

在这里插入图片描述

算法:

我们用数组 merged 存储最终的答案。

首先,我们将列表中的区间按照左端点升序排序。然后我们将第一个区间加入 merged 数组中,并按顺序依次考虑之后的每个区间:

  • 如果当前区间的左端点在数组 merged 中最后一个区间的右端点之后,那么它们不会重合,我们可以直接将这个区间加入数组 merged 的末尾;

  • 否则,它们重合,我们需要用当前区间的右端点更新数组 merged 中最后一个区间的右端点,将其置为二者的较大值。

C语言版代码实现(冒泡排序版本)

/**
 * Return an array of arrays of size *returnSize.
 * The sizes of the arrays are returned as *returnColumnSizes array.
 * Note: Both returned array and *columnSizes array must be malloced, assume caller calls free().
 */
int** merge(int** intervals, int intervalsSize, int* intervalsColSize, int* returnSize, int** returnColumnSizes){
    int i,j,pre=-1,*t,base=100;
    int **results=(int **)malloc(sizeof(int *)*base);
    *returnColumnSizes=(int *)malloc(sizeof(int)*intervalsSize);
    *returnSize=0;
    for(i=1;i<intervalsSize;i++)
    {
       for(j=0;j<intervalsSize-i;j++)
       {
           if(intervals[j][0]>intervals[j+1][0])
           {
               t=intervals[j];
               intervals[j]=intervals[j+1];
               intervals[j+1]=t;
           }
       }
    }
   for(i=0;i<intervalsSize;i++)
   {
       if(intervals[i][0]>pre)
       {
           results[*(returnSize)]=(int *)calloc(sizeof(int),2);
           (*returnColumnSizes)[*returnSize]=2;
           results[(*returnSize)][0]=intervals[i][0];
           results[(*returnSize)++][1]=intervals[i][1];
           pre=intervals[i][1];
           if(*returnSize==base){
               base*=2;
               results=(int **)realloc(results,sizeof(int *)*base);
           }
       }
       else{
           results[(*returnSize)-1][1]=fmax(intervals[i][1], results[(*returnSize)-1][1]);
           pre=results[(*returnSize)-1][1];
       }
   }
    return results;
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/352000.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

windows上配置IIS全过程

文章目录1️⃣ 配置IIS1.1 从开始打开服务器管理1.2 添加角色和功能1.3 添加角色和功能向导1.4 按照如下步骤选择2️⃣ 问题&#xff1a;缺少源文件解决方案优质资源分享作者&#xff1a;xcLeigh 文章地址&#xff1a;https://blog.csdn.net/weixin_43151418/article/details/1…

与感受野相关的几种网络结构

一、Inception 1. Inception v1 目的 通过设计一个稀疏网络结构&#xff0c;但是能够产生稠密的数据&#xff0c;既能增加神经网络表现&#xff0c;又能保证计算资源的使用效率。 结构 图1-1 Inception v1结构图 特点 共4个通道&#xff0c;其中3个卷积通道分别使用111111…

HashTable和HashMap的区别详解

一、HashMap简介 HashMap是基于哈希表实现的&#xff0c;每一个元素是一个key-value对&#xff0c;其内部通过单链表解决冲突问题&#xff0c;容量不足&#xff08;超过了阀值&#xff09;时&#xff0c;同样会自动增长。 HashMap是非线程安全的&#xff0c;只是用于单线程环境…

Velocity实战笔记

基础准备 velocity模板语法简介 官方实例 版本环境 <dependency><groupId>org.apache.velocity</groupId><artifactId>velocity</artifactId><version>1.7</version></dependency>标签介绍 <Workbook><DocumentPr…

STM32 DFU模式烧录代码

什么是DFU? dfu的本质是isp&#xff0c;usb接口的isp&#xff0c;在系统编程&#xff0c;进入isp的方式我们先了解 如下图 boot0为高电平 boot1为低电平即可进入isp模式。 熟悉的场景 在我们使用flymcu软件下载代码时&#xff0c;本质也是isp 串口接口的isp。 傻瓜使用方式…

RF电路的分布参数集中参数化

文章目录1.威尔金森功分器的集总参数设计例1&#xff1a;ADS仿真:设计一个工作在1GHz的威尔金森功分器2.分支线定向耦合器的集总参数设计例2&#xff1a;ADS仿真设计一个分支线的定向耦合器&#xff0c;中心频率&#xff1a;920MHz3.总结射频电路的分析会引入分布参数分析的理论…

刷题专练之翻转题练习

文章目录一、 编写函数实现字符串翻转二、轮转数组总结一、 编写函数实现字符串翻转 描述 编写一个函数&#xff0c;实现字符串的翻转 输入描述&#xff1a; 输入一个字符串 输出描述&#xff1a; 输出翻转后的字符串 写法一&#xff1a; 这种方法是定义begin和end&#xff0…

Nacos详细使用操作文档(图文详细)

文章目录Nacos详细使用操作文档(图文详细)1、安装2、Nacos作为注册中心2.1、Nacos服务注册【ICRMS】2.2、Nacos 服务调用2.2.1、Feign 远程调用【Personnel】2.2.2)、RestTemplateRibbon 远程调用【Personnel】3、Nacos作为配置中心4、Nacos 命令空间5、Nacos配置文件参数详解N…

Java 基础面试题——异常

目录1.Exception 和 Error 有什么区别&#xff1f;2.Throwable 类中常用方法有哪些&#xff1f;3.Checked Exception 和 Unchecked Exception 有什么区别&#xff1f;4.throw 和 throws 的区别是什么&#xff1f;5.try-catch-finally 如何使用&#xff1f;6.finally 块中的代码…

4.3 PBR

1. 实验目的 熟悉PBR的应用场景掌握PBR的配置方法2. 实验拓扑 PBR实验拓扑如图4-8所示: 图4-8:PBR 3. 实验步骤 (1) IP地址的配置 R1的配置 <Huawei>system-view

缓存Redis常见面试题

一、Redis概念Redis是⼀个⾼性能的key-value数据库&#xff0c;它是完全开源免费的&#xff0c;⽽且redis是⼀个NOSQL类型数据库&#xff0c;是为了解决⾼并发、⾼扩展&#xff0c;⼤数据存储等⼀系列的问题⽽产⽣的数据库解决⽅案&#xff0c;是⼀个⾮关系型的数据库。二、Red…

【Git】git常用命令总结

简言 git是一个开源的分布式版本控制系统&#xff0c;可以有效、高速地处理从很小到非常大的项目版本管理。 里面有很多常用的命令语法&#xff0c;在此做一个常用命令总结记录&#xff0c;以备不时之需。 命令总结 由于git是基于linux开发的工具&#xff0c;所以有个特点&a…

网安新基建!国内首个“网络安全卓越中心”落地南京江宁

​​近日&#xff0c;国内首个网络安全卓越中心&#xff08;“CyberPeace Center of Excellence”简称“CPCOE”&#xff09;落地南京市江宁区&#xff0c;项目金额数千万元&#xff0c;由赛宁网安建设运营。CPCOE旨在提高全民数字素养、培育网安人才、提升关基防御能力、促进安…

阿里P6细谈Python简易接口自动化测试框架设计与实现,我直呼内行

1、开发环境 操作系统&#xff1a;Ubuntu18 开发工具&#xff1a;IDEAPyCharm插件 Python版本&#xff1a;3.6 2、用到的模块 requests&#xff1a;用于发送请求 xlrd&#xff1a;操作Excel&#xff0c;组织测试用例 smtplib&#xff0c;email&#xff1a;发送测试报告 l…

2023年美国大学生数学建模A题:受干旱影响的植物群落建模详解+模型代码(一)

目录 前言 一、题目理解 背景 解析&#xff1a; 要求 二、建模 1.相关性分析 2.相关特征权重 只希望各位以后遇到建模比赛可以艾特认识一下我&#xff0c;我可以提供免费的思路和部分源码&#xff0c;以后的数模比赛只要我还有时间肯定会第一时间写出免费开源思路&…

计量地理学(Quantitative Geography)的学习笔记

目录 1.什么是主成分分析 2.什么是Thile指数&#xff08;锡尔系数&#xff09;&#xff0c;是用来干什么的 3.罗伦次&#xff08;洛伦兹&#xff09;曲线的含义&#xff0c;表征什么样的现象 4.什么是偏相关分析&#xff0c;偏相关分析系数的含义&#xff0c;主要作用 5.多…

Homekit智能家居-智能插座

WiFi智能插座对于新手接触智能家居产品更加友好&#xff0c;不需要额外购买网关设备 很多智能小配件也给我们得生活带来极大的便捷&#xff0c;智能插座就是其中之一&#xff0c;比如外出忘记关空调&#xff0c;可以拿起手机远程关闭。 简单说就是&#xff1a;插座可以连接wi…

2023版最新最强大数据面试宝典

此套面试题来自于各大厂的真实面试题及常问的知识点&#xff0c;如果能理解吃透这些问题&#xff0c;你的大数据能力将会大大提升&#xff0c;进入大厂指日可待&#xff01;目前已经更新到第4版&#xff0c;广受好评&#xff01;复习大数据面试题&#xff0c;看这一套就够了&am…

m0n0防火墙的安装(11)

实验目的 1、了解m0n0的安装过程 2、培养学生动手能力预备知识 1、VirtualBox的使用&#xff0c;及基础英文阅读能力实验环境 本实验的实验环境为&#xff0c;在实验机上安装VirtualBox虚拟机软件&#xff0c;并用VirtualBox创建了一台虚拟机来安装m0n0&#xff0c;并设置了相关…

47.在ROS中实现global planner(3)

接着之前45.在ROS中实现global planner&#xff08;1&#xff09;和46.在ROS中实现global planner&#xff08;2&#xff09;的铺垫&#xff0c;在ROS中实现AStar Global Planner 1. planner package 照着之前的模板&#xff0c;修改下名称 git clone -b https://gitee.com/…