Leetcode 56 合并区间

题意理解:       

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

        目标:合并所有重叠区间,则原有区间的右边界可能发生变化。

解题思路

        采用贪心探索每个独立区间的最右区间。

        首先,要识别重叠的区间,用于后续处理。按照每个区间的左边界升序排序

        当且仅当,(i-1区间的右边界)>=(i区间的左边界),即为i区间和i-1区间重叠

        识别出重叠区间后,对最左区间的右边界进行探索,获得两区间合并后的最远右边界。

       以此完成区间合并——获得一个新区间。

        

        若区间无重叠现象,则直接作为一个独立区间加入结果集。

        

1.贪心解题

明确全局最优解: 划分独立的区间。局部最优解:尽可能延长重叠区域的右区间

为鉴别重叠区域,首先按照左边界升序排序。

对于重叠的区域总是更新合理的右边界。

将合并后的新区间及独立的老区间加入结果集。

注意:List转数组:

方法一:

int[][] resultArr=new int[result.size()][2];
for(int i=0;i<result.size();i++) resultArr[i]=result.get(i);

方法二:

res.toArray(new int[res.size()][]);

public int[][] merge(int[][] intervals) {//按照左边界升序排序Arrays.sort(intervals,(a,b)->Integer.compare(a[0],b[0]));//记录结果集LinkedList<int[]> result = new LinkedList<>();result.add(intervals[0]);for(int i=1;i<intervals.length;i++){//有重叠,更新右边界if(intervals[i-1][1]>=intervals[i][0]){intervals[i][1]=Math.max(intervals[i-1][1],intervals[i][1]);result.getLast()[1]=intervals[i][1];}else{//无重叠,加入新区间result.add(intervals[i]);}}return  result.toArray(new int[result.size()][]);}

2.分析 

时间复杂度:O(n logn) 主要的时间耗费是排序和遍历数组。

空间复杂度:O(logn) 主要的空间耗费是排序所需的额外空间。

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

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

相关文章

计算机基础面试题总结

47、OSI、TCP/IP、五层协议的体系结构以及各层协议 OSI分层&#xff08;7层&#xff09;&#xff1a;物理层、数据链路层、网络层、传输层、会话层、表示层、应用层。 TCP/IP分层&#xff08;4层&#xff09;&#xff1a;网络接口层、网际层、运输层、应用层。 五层协议&…

k8s集群etcd备份与恢复

一、前言 k8s集群使用etcd集群存储数据&#xff0c;如果etcd集群崩溃了&#xff0c;k8s集群的数据就会全部丢失&#xff0c;所以需要日常进行etcd集群数据的备份&#xff0c;预防etcd集群崩溃后可以使用数据备份进行恢复&#xff0c;也可用于重建k8s集群进行数据恢复 二、备份…

gin框架使用系列之六——自定义中间件

系列目录 《gin框架使用系列之一——快速启动和url分组》《gin框架使用系列之二——uri占位符和占位符变量的获取》《gin框架使用系列之三——获取表单数据》《gin框架使用系列之四——json和protobuf的渲染》《gin框架使用系列之五——表单校验》 一、gin中间件概述 gin中将…

2024年中职“网络安全“—数字调查取证(attack817.pcapng)

目录 ​1.通过分析数据包找出恶意用户最初访问HTTP服务的包号&#xff0c;将该值作为Flag值提交, Flag格式为flag{xxx}&#xff1b; 2.继续查看数据包文件分析出恶意用户扫描了哪些端口&#xff0c;将全部的端口号按照一定顺序作为Flag值&#xff0c;提示&#xff1a;注意端口…

给有数据的表增加一个字段id作为主键,创建一个自增队列,将sequence队列生成的值作为id的值插入表中

1&#xff0c;先看原来的表是否有主键&#xff0c;如果有先删除 alter table crfnd.tbl_org_info drop constraint pk_tbl_org_info2,给这个表增加一个字段——id ALTER TABLE crfnd.tbl_org_info ADD id numeric(19);3,创建一个自增队列 CREATE SEOUENCE crfnd.seq_tbl_or…

编译原理手写版笔记

编译原理手写版笔记 来自smile 一个学期主要学习了词法分析、文法分析、语法分析、语义分析。 按照教学脉络&#xff0c;整理了一份期末笔记。用于复习整个学期的知识点 并且把所有的数据结构以及算法 整理出来。可以用于考试手写完成题目。 当然拿高分需要多练习&#xff0…

关于百万数据表全表分页查询研究

这里写自定义目录标题 前言一、背景介绍二、解决思路二、二张表的关联手法1、关联手法1 :使用JOIN2、关联手法 :使用 IN结论 前言 描述&#xff1a;文本主要用来记录&#xff0c;对大数据量表多表联合的分页查询效率的研究。 一、背景介绍 技术背景&#xff1a;使用若依框架…

理解 Go Mod Init

初始化Go模块和管理依赖的全面指南 go mod init 是Go编程语言&#xff08;通常称为Golang&#xff09;中用于初始化新Go模块的命令。在Go中&#xff0c;一个模块是一组相关的Go包&#xff0c;它们作为一个单元一起进行版本控制。通常&#xff0c;在项目目录的根目录下使用 go m…

【算法】运用滑动窗口方法解决算法题(C++)

文章目录 1. 滑动窗口 介绍2. 滑动窗口算法引入209.长度最小的子数组 3. 使用滑动窗口解决算法题3.无重复字符的最长子串1004.最大连续1的个数III1658.将x减到0的最小操作数904.水果成篮LCR015.找到字符串中所有字母异位词30.串联所有单词的子串76.最小覆盖子串 1. 滑动窗口 介…

数据分析-23--糖尿病预测(线性回归模型)(包含数据代码)

文章目录 0. 数据代码下载1. 项目介绍2. 数据处理1. 导入数据2. 处理数据 3. 建立模型4. 考察单个特征 0. 数据代码下载 关注公众号&#xff1a;『AI学习星球』 回复&#xff1a;糖尿病预测 即可获取数据下载。 算法学习、4对1辅导、论文辅导或核心期刊可以通过公众号或➕v&am…

“双十一、二” 业务高峰如何扛住?韵达快递选择 TDengine

小 T 导读&#xff1a; 为了有效处理每日亿级的数据量&#xff0c;早在 2021 年&#xff0c;韵达就选择用 TDengine 替代了 MySQL&#xff0c;并在三台服务器上成功部署和上线了 TDengine 2.0 集群。如今&#xff0c;随着 TDengine 3.0 版本的逐渐成熟&#xff0c;韵达决定将现…

android实战之添加图标到项目中

引言 阿里云矢量库有很多图标&#xff0c;注册账号&#xff0c;下载下载选择的图标&#xff0c;下载时选择svg格式。 实现 1. androidstudio &#xff0c;drawable右键---new ----->vector asset&#xff0c;选择本地下载的资源。 点击next。完成

devops使用

官方文档 使用 Git 进行代码 - Azure DevOps | Microsoft Learn

libssh 服务端权限认证绕过(CVE-2018-10933)

漏洞描述&#xff1a; libssh 是一个提供 SSH 相关接口的开源库&#xff0c;包含服务端、客户端等。其服务端代码中存在一处逻辑错误&#xff0c;攻击者可以在认证成功前发送MSG_USERAUTH_SUCCESS消息&#xff0c;绕过认证过程&#xff0c;未授权访问目标 SSH 服务器。 复现过…

LeetCode——动态规划

动态规划 一、一维数组&#xff1a;斐波那契数列 爬楼梯70简单 dp定义&#xff1a; dp[i]表示爬到第i阶有多少种不同的方式 状态转移方程&#xff1a; dp[i] dp[i-1] dp[i-1] &#xff08;每次可以爬1或2个台阶&#xff09; 边界条件&#xff1a; dp[0] 1; dp[1] 1;&#…

易混淆的公式

a x − 1 ∼ x ln ⁡ a a^x-1\sim x\ln a ax−1∼xlna log ⁡ a ( 1 x ) ∼ x 1 ln ⁡ a \log _a(1x)\sim x\frac{1}{\ln a} loga​(1x)∼xlna1​ ( log ⁡ a x ) ′ 1 x ln ⁡ a (\log _ax) \frac{1}{x\ln a} (loga​x)′xlna1​

传统船检已经过时?AR智慧船检来助力!!

想象一下&#xff0c;在茫茫大海中&#xff0c;一艘巨型货轮正缓缓驶过。船上的工程师戴着一副先进的AR眼镜&#xff0c;他们不再需要反复翻阅厚重的手册&#xff0c;一切所需信息都实时显示在眼前。这不是科幻电影的场景&#xff0c;而是智慧船检技术带来的现实变革。那么问题…

[Linux]Ubuntu noVNC使用

又到了逛大型程序员交友 网站的时间了&#xff0c;今天你准备好了吗。 今天要推荐的一个有趣的项目是noVNC setup好以后是这个样子的&#xff0c;可以在浏览器登陆vnc&#xff0c;不需要再安装一个vnc client. setup的过程比较简单&#xff0c;分为以下几步&#xff1a; 1. v…

Linux操作系统——进程(六) 进程地址空间

进程地址空间 C/C程序员一般将我们所写的程序看成如下这种结构&#xff1a; 我们所写的程序通过编译编译之后就可以以这样的方式进行分布. 我们先通过编写一段C语言代码来进行验证&#xff1a; 运行结果&#xff1a; 我们可以看出来上述地址遵循的就是我们上面画的一种结构。…

059:vue中使用 AJAX来读取来自XML文件的信息

第059个 查看专栏目录: VUE ------ element UI 专栏目标 在vue和element UI联合技术栈的操控下&#xff0c;本专栏提供行之有效的源代码示例和信息点介绍&#xff0c;做到灵活运用。 &#xff08;1&#xff09;提供vue2的一些基本操作&#xff1a;安装、引用&#xff0c;模板使…