想要精通算法和SQL的成长之路 - 无重叠区间

news/2024/4/28 18:35:57/文章来源:https://blog.csdn.net/Zong_0915/article/details/128052275

想要精通算法和SQL的成长之路 - 无重叠区间

  • 前言
  • 一. 无重叠区间

前言

想要精通算法和SQL的成长之路 - 系列导航

一. 无重叠区间

原题链接

给定一个区间的集合 intervals ,其中 intervals[i] = [starti, endi] 。返回 需要移除区间的最小数量,使剩余区间互不重叠 。

示例1:

  • 输入: intervals = [[1,2],[2,3],[3,4],[1,3]]
  • 输出: 1
  • 解释: 移除 [1,3] 后,剩下的区间没有重叠。

首先呢,既然题目给定的N个区间中,我们假设肯定有重叠的部分,那么我们怎么去判断某一部分的区间是重叠的呢?那肯定是需要比较相邻两个区间的左右边界。更重要的是,我们需要对给定的区间做一个排序。以便于比较。

那么如何做到减少最少数量的区间以达到题目要求?

核心思想:尽可能保证每个区间的范围越小越好。那么重叠的概率也就越小。

那么排序的时候这就需要分两种情况来考虑。

思路一:按照右边界来排序。那么我们应该从左往右进行遍历。那么右边界越小越好(局部最优)。右边界越小,留给下一个区间的范围可能就越大。存在交集的可能越小。那么需要删除的区间个数越少。(全局最优

思路二:按照左边界来排序。那么我们应该从右往左进行遍历。那么左边界越大越好。左边界越大,留给上一个区间的范围可能就越大。

以右边界排序为例,如图:
在这里插入图片描述

我画了6个区间:分别进行了标号。也能看出来根据右边界进行排序。

  1. 第二个区间和第三个区间都和黄色虚线位置存在交集,那么这两个区间应该被删除。
  2. 找到第一个与黄色虚线不存在交集的区间,它的右边界作为新的交际线。也就是区间4。
  3. 同理,第一个和区间4不存在交集的也就是区间6。区间5存在交集。

那么遍历的过程中计入存在交集的个数,即是最终要删除的个数。

以按照右边界排序为例,最终结果:

public int eraseOverlapIntervals(int[][] intervals) {// 根据右边界从小到大排序Arrays.sort(intervals, (o1, o2) -> o1[1] - o2[1]);int count = 0;int pre = Integer.MIN_VALUE;// 从左往右遍历,希望右边界越小越好for (int i = 0; i < intervals.length; i++) {// 上一个右边界(没有重复的) > 当前区间的左边界, 说明当前区间出现交集if (pre > intervals[i][0]) {// 记录交集的个数,也就是要删除的区间个数count++;} else {// 更新右边界pre = intervals[i][1];}}return count;
}

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

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

相关文章

谷粒学苑_第十天

第十天 视频删除 后端 相关sdk在阿里云视频点播文档的服务端SDK–>Java SDK–>媒资管理–>删除视频 复制前面的InitObject到utils里 删除的方法 DeleteMapping("{id}")public R removeAliyunVideo(PathVariable String id){try{DefaultAcsClient defau…

1000套web前端期末大作业 HTML+CSS+JavaScript网页设计实例 企业网站制作【建议收藏】

一、1000套HTML期末学生结课大作业作品(HTMLCSSJS) 这8年来做了1000多套(HTMLCSSJS)网页设计的学生期末大作业&#xff0c;都是给学生定制的都符合学校或者学生考试期末作业的水平&#xff0c;都是divcss框架原创代码写的&#xff0c;有的有js&#xff0c;有的视频音乐flash的…

Mongodb操作基础 分片

Mongodb分片 MongoDB分片是MongoDB支持的另一种集群形式&#xff0c;它可以满足MongoDB数据量呈爆发式增长的需求。当MongoDB存储海量的数据时&#xff0c;一台机器可能无法满足数据存储的需求&#xff0c;也可能无法提供可接受的读写吞吐量&#xff0c;这时&#xff0c;我们就…

【算法】2022第五届“传智杯”全国大学生计算机大赛(练习赛)

【参考&#xff1a;第五届“传智杯”全国大学生计算机大赛&#xff08;练习赛&#xff09; - 洛谷 | 计算机科学教育新生态】 练习赛满分程序&#xff08;多语言&#xff09;&#xff1a;https://www.luogu.com.cn/paste/fi60s4yu CPU一秒大概运行 10810^8108 次&#xff0c;…

ASEMI肖特基二极管MBR40200PT参数,MBR40200PT规格

编辑-Z ASEMI肖特基二极管MBR40200PT参数&#xff1a; 型号&#xff1a;MBR40200PT 最大重复峰值反向电压&#xff08;VRRM&#xff09;&#xff1a;200V 最大平均正向整流输出电流&#xff08;IF&#xff09;&#xff1a;40A 峰值正向浪涌电流&#xff08;IFSM&#xff0…

imx6ull pro BSP 工具链

BSP&#xff0c;Board Support Package&#xff0c;指板级支持包&#xff0c;是构建嵌入式操作系统所 需的引导程序(Bootload)、内核(Kernel)、根文件系统(Rootfs)和工具链 (Toolchain)。 每种开发板的 BSP 都不一样&#xff0c;并且这些源码都非常庞大。我们把这些源码都 放在…

自动化运维CICD

目录 概述 为什么持续集成和发布可以提高效率 如何实现 1、在linux服务器安装部署代码仓库 2、安装jenkins 使用shell脚本实现CICD 使用pipeline实现CICD 使用Blue Ocean实现CICD 概述 持续集成&#xff08;Continuous Integration&#xff0c;CI)和持续发布&#xff0…

二、进程管理(四)经典同步互斥问题

目录 4.1生产者-消费者问题 4.1.1单类生产者-单类消费者问题 4.1.2多类生产者-多类消费者问题 4.1.3吸烟者问题 4.2读者-写者问题 4.3哲学家进餐问题 分析进程同步和互斥问题的三步&#xff1a; 关系分析&#xff1a;分析问题中的同步&#xff08;前驱关系&#xff09;、…

【网络】tcpdump、Wireshark 案例超详细介绍

文章目录网络分层应用层找到服务器的 IP查接口、对象的耗时删除指定网站的Cookie表示层、会话层tcpdump、wireshard传输层telnet: 路径可达性测试nc: 路径可达性测试netstat&#xff1a;查看当前连接状态iftop&#xff1a;查看当前连接的传输速率netstat -s: 查看丢包和乱序的统…

数据结构(5)树形结构——二叉搜索树(JAVA代码实现)

5.1.概述 二叉搜索树&#xff0c;也叫二叉查找树、二叉排序树&#xff0c;顾名思义&#xff0c;这种二叉树是专门用来进行数据查找的二叉树。二叉搜索树的查找其实就是二分查找。 二叉搜索树的定义&#xff1a; 二叉搜索树可以为空如果二叉搜索树不为空&#xff0c;那么每个…

Visual C++ 2010开发的程序在其它电脑上运行提示“找不到MSVCR100D.dll”原因及解决

Visual C 2010开发的程序在其它电脑上运行提示“找不到MSVCR100D.dll”原因及解决 Microsoft Visual C&#xff08;简称Visual C、MSVC、VS或VC&#xff09;2010是微软公司的免费C开发工具&#xff0c;具有集成开发环境&#xff0c;可提供编辑C语言&#xff0c;C以及C/CLI等编程…

Java项目:JSP手机商城管理系统包含前台

作者主页&#xff1a;源码空间站2022 简介&#xff1a;Java领域优质创作者、Java项目、学习资料、技术互助 文末获取源码 项目介绍 本项目分为前后台&#xff0c;分为管理员与普通用户两种角色&#xff0c;管理员登录后台&#xff0c;普通用户登录前台&#xff1b; 管理员角色…

大数据_什么是数据中台?

目录 一、数据中台的定义 二、数据中台必备的是个核心能力 三、数据中台VS业务中台 四、数据中台VS数据仓库 五、数据中台VS现有信息架构 六、数据中台的业务价值与技术价值 一、数据中台的定义 数据中台是一套可持续“让企业的数据用起来”的机制&#xff0c;是一种战略…

[附源码]计算机毕业设计JAVA人力资源管理系统论文2022

[附源码]计算机毕业设计JAVA人力资源管理系统论文2022 项目运行 环境配置&#xff1a; Jdk1.8 Tomcat7.0 Mysql HBuilderX&#xff08;Webstorm也行&#xff09; Eclispe&#xff08;IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持&#xff09;。 项目技术&#xff1a; SSM…

第8章 综合案例—构建DVD租赁商店数据仓库

目录 章节概要 案例背景介绍 数据仓库的架构模型 数据仓库的架构模型 数据库sakila的下载和安装 数据库sakila简介 数据库sakila中 数据表之间的关系 数据表简介 用于储存电影基本信息及相关介绍的数据&#xff0c;该数据表各个字段的含义如表。 用于储存定义电影id所…

Kafka生产者之分区

一、分区好处 &#xff08;1&#xff09;便于合理使用存储资源&#xff0c;每个Partition在一个Broker上存储&#xff0c;可以把海量的数据按照分区切割成一块一块数据存储在多台Broker上。合理控制分区的任务&#xff0c;可以实现负载均衡的效果&#xff1b; &#xff08;2&…

惊喜:2023前瞻版Java面试指南,不止八股文

前言&#xff1a; 2022年马上就要过去了&#xff0c;即将要到来的就是2023年的金三银四面试季&#xff0c;随着政策的放宽&#xff0c;经济的逐步复苏&#xff0c;岗位的需求也会越来越大&#xff0c;所以趁这段时间进行知识储备将会是最好的时间段&#xff0c;永远要做快人一…

智能疾病查询接口

一、接口介绍 最全的疾病大全&#xff0c;收集了数万种常见疾病&#xff0c;任何常见疾病都可查询。 二、功能体验 三、API文档 3.1 查询疾病科目 3.1.1接入点说明 查询疾病的类别。 3.1.2接口地址 http[s]&#x1f615;/www.idmayi.com/546-1?idmayi_appid替换自己的值&…

APP逆向案例之(二)对加固APP进行分析和破解

说明&#xff1a;对加固APP进行分析和破解&#xff0c;对发现新版本提示关掉 1、先对APP窗口类行进HOOK&#xff0c;确定窗口提示用的是那个类。 android hooking watch class android.app.AlertDialog 2、发现一个非常明显的函数 setCancelable objection -g com.hello.qq…

【ML特征工程】第 4 章 :特征缩放的影响:从词袋到 Tf-Idf

&#x1f50e;大家好&#xff0c;我是Sonhhxg_柒&#xff0c;希望你看完之后&#xff0c;能对你有所帮助&#xff0c;不足请指正&#xff01;共同学习交流&#x1f50e; &#x1f4dd;个人主页&#xff0d;Sonhhxg_柒的博客_CSDN博客 &#x1f4c3; &#x1f381;欢迎各位→点赞…