【排序】435. 无重叠区间

435. 无重叠区间

方法概述

整体解决方案分为两个部分:

  1. eraseOverlapIntervals(int[][] intervals):这是主要方法,用于计算并返回需要移除的区间数量。
  2. intervalSchedule(int[][] intvs):这个辅助方法用于通过贪心算法计算出最大的互不重叠区间集合大小。

解决思路

eraseOverlapIntervals 方法

  • 输入:二维数组 intervals,表示多个区间。
  • 处理
    • 获取区间数量 n
    • 调用 intervalSchedule 方法计算最大的互不重叠区间集合大小。
    • 通过总区间数减去互不重叠区间的数量,得到需要移除的区间数量。
  • 输出:返回需要移除的区间数量。

intervalSchedule 方法

  • 目标:找出并计算最大的互不重叠区间集合大小。
  • 步骤
    1. 检查区间集是否为空,为空则直接返回0。
    2. 使用 Arrays.sort 方法和自定义比较器按照区间的结束时间对区间进行升序排序。
    3. 初始化一个变量 x_end 来记录当前选中区间的结束时间,以及 count 为计数器。
    4. 遍历排序后的区间数组,对于每个区间,如果其开始时间不小于 x_end,则将其视为一个互不重叠的区间,并更新 x_end 为该区间的结束时间,同时 count 加一。
  • 结果:返回计数器 count 的值,即最大的互不重叠区间集合的大小。

代码复杂度

  • 时间复杂度:O(nlogn),主要由排序操作决定。
  • 空间复杂度:O(1) 或 O(logn),取决于排序算法的空间复杂度。
class Solution {public int eraseOverlapIntervals(int[][] intervals) {int n = intervals.length;return n - intervalSchedule(intervals);}int intervalSchedule(int[][] intvs){// 将所有区间按照end升序排序if(intvs.length == 0){return 0;}// 排序  升序Arrays.sort(intvs,new Comparator<int[]>(){public int compare(int[] a,int[] b){return a[1] - b[1];}});// 至少有一个区间不相交int x_end = intvs[0][1];// 说明是结束最早的区间int count = 1;// 这是第一个不相交的区间for(int[] interval:intvs){int start = interval[0];// 不相交的区间都是大于等于startif(start >= x_end){// 说明找到下一个选择区间了 不相交的count++;x_end = interval[1];// 更新end}}return count;}
}

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

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

相关文章

【SEO 初学者指南】搜索引擎的工作原理:抓取、索引、排名

了解搜索引擎的工作原理&#xff0c;从抓取和索引到排名和惩罚&#xff0c;以及优化和故障排除技巧。 搜索引擎是如何工作的&#xff1f; 搜索引擎通过抓取、索引和排名互联网内容来工作。首先&#xff0c;爬虫通过网络爬虫发现在线内容。然后&#xff0c;索引分析内容并将其…

Spring核心原理

目录 IOCxml配置创建对象xml配置注入属性自动装配引入外部属性文件注解创建对象注解注入属性 AOP方式一 : 通过JDK接口实现方式二 : 通过AspectJ实现AOP JdbcTemplateSpring事务管理整合Mybatis实现一实现二 WebFlux函数式编程 Spring是一个开放源代码的JavaEE设计层面框架&…

C++:拷贝构造函数

1.概念 在现实生活中&#xff0c;可能存在一个与你一样的自己&#xff0c;我们称之为双胞胎。那在创建对象的时候&#xff0c;可否创建一个与已存在对象一模一样的新对象呢&#xff1f;答案是可以的&#xff0c;这就要通过拷贝构造函数来实现了。 拷贝构造函数&#xff1a;只有…

微服务基础

目录 一、单体架构 二、分布式架构 三、微服务 四、微服务结构 五、SpringCloud 六、服务拆分 七、远程调用 一、单体架构 单体架构就是将业务的所有功能都集中在一个项目中进行开发&#xff0c;并打成一个包进行部署。 他的优点很明显&#xff0c;就是架构简单&#xff…

C++的类和对象(四):拷贝构造函数

目录 拷贝构造函数 特性 自定义类型的传值传参和传引用传参对比 赋值运算符重载 拷贝构造函数 基本概念&#xff1a;只有单个形参&#xff0c;该形参是对本类类型对象的引用&#xff08;一般常用const修饰&#xff09;&#xff0c;在创建一个已存在对象一模一样的新对象时…

MySQL运维实战之备份和恢复(8.4)xtrabackup恢复全量备份

作者&#xff1a;俊达 恢复全量备份大致可以分成以下几步&#xff1a;解压备份文件、prepare备份文件、将数据copy到目标实例相关目录、启动数据库实例。 解压文件 如果备份时使用了xbstream&#xff0c;需要先解压备份文件。 我们备份时使用了–streamxbstream和gzip压缩&am…

数据结构:AVL树

目录 1、AVL树的概念 2、二叉搜索树的功能与实现 1、AVL树节点定义 2、AVL树的插入 3、AVL树的旋转操作 1、左旋 2、右旋 3、左右旋 4、右左旋 3、AVL树完整代码实现 1、AVL树的概念 在前面的文章中&#xff0c;我们学过了二叉搜索树&#xff0c;二叉搜索树虽可以缩短查…

勾股定理的七种经典证明

据说勾股定理约有500种证明方法&#xff0c;下面介绍几种经典的证明方法。 一、切割重拼法。 顾名思义&#xff0c;就是将图形切割成其他形式的图形&#xff0c;然后通过拼图转换为另一种图形&#xff0c;这个过程中图形的面积是不变的。 “赵爽弦图”是这种方法的经典应用&…

MYSQL刷题2| 1112.每位学生的最高成绩、1398.购买了产品A和产品B缺没有购买产品C的顾客

1112.每位学生的最高成绩 题目链接&#xff1a;1112. 每位学生的最高成绩 - 力扣&#xff08;LeetCode&#xff09; # Write your MySQL query statement below select e.student_id, MIN(course_id) AS course_id, grade from enrollments e where (student_id,grade) in (s…

JimuReport 积木报表 v1.7.2 紧急发布,修复1.7.1严重Bug

1.7.2-beta 紧急版 2024-03-07 紧急版本&#xff0c;修复1.7.1版本的严重bug。 集成依赖 springboot2依赖 <dependency><groupId>org.jeecgframework.jimureport</groupId><artifactId>jimureport-spring-boot-starter</artifactId><versi…

Android视角看鸿蒙第三课(module.json中的各字段含义之nametype)

Android视角看鸿蒙第三课(module.json中的各字段含义) 前言 上篇文章我们试图找到鸿蒙app的程序入口&#xff0c;确定了在鸿蒙工程中,由AppScope下的app.json5负责应用程序的图标及名称,由entry->src->main-module.json5负责桌面图标及名称的展示。 AppScope下的app.js…

c++ vector赋值新技能、函数返回动态数组、 计算静动态数组的大小

一、vector赋值新技能 方法1&#xff1a;pushback vector<int> a; a.pushback(10); 方法2&#xff1a;直接赋值(很少用) vector<int> a {1,2 ,3,4,5}; 二、函数返回动态数组 void func(vector<int>src, double *dtemp) {for (int i 0; i < src.siz…

Java 反射机制 和 绑定属性资源文件

反射机制 1、反射机制有什么用&#xff1f; 通过 java 语言中的反射机制可以操作字节码文件。 有点类似于黑客。&#xff08;可以读和修改字节码文件。&#xff09; 通过反射机制可以操作代码片段。&#xff08;class文件。&#xff09; 2、反射机制的相关类在哪个包下&#xf…

使用Kali搭建钓鱼网站教程

一、前言 使用kali工具一分钟制作出和目标网站一模一样的钓鱼网站。目标用户使用钓鱼网站登录自己的账号&#xff0c;账号密码将被自动劫持。 二、钓鱼网站的制作过程 1.在虚拟机VMvare中登录kali linux 2.准备一个目标网址 3.在kail中搜索使用工具 4.在弹出的选项中选择第一…

用友 NC saveDoc.ajax 任意文件上传漏洞复现

0x01 产品简介 用友NC是一款企业级ERP软件。作为一种信息化管理工具,用友NC提供了一系列业务管理模块,包括财务会计、采购管理、销售管理、物料管理、生产计划和人力资源管理等,帮助企业实现数字化转型和高效管理。 0x02 漏洞概述 用友 NC saveDoc.ajax接口处存在任意文件…

【JavaEE初阶】 JVM简介

文章目录 &#x1f38d;前言&#x1f343;JVM发展史&#x1f6a9;Sun Classic VM&#x1f6a9;Exact VM&#x1f6a9;HotSpot VM&#x1f6a9;JRockit&#x1f6a9;J9 JVM&#x1f6a9;Taobao JVM&#xff08;国产研发&#xff09; &#x1f340;JVM 运行流程⭕总结 &#x1f3…

基于毕奥-萨伐尔定律的交流电机的4极旋转磁场matlab模拟与仿真

目录 1.课题概述 2.系统仿真结果 3.核心程序与模型 4.系统原理简介 5.完整工程文件 1.课题概述 基于毕奥-萨伐尔定律的交流电机的4极旋转磁场&#xff0c;对比不同定子半径&#xff0c;对比2级旋转磁场。 2.系统仿真结果 3.核心程序与模型 版本&#xff1a;MATLAB2022a…

2024-3-7 python创建二维列表谨防连用两个*,列表的增量赋值(+=或*=)与元组的增量赋值的差异

#1、python创建二维列表谨防连用两个* 要创建1个二维的列表&#xff0c;不要连用两个*号&#xff0c;否则会出现改1个值&#xff0c;其他位置的值跟着变化的问题。 下面两种创建二维列表的方法&#xff0c;要用第一种&#xff0c;不要用第二种 >>> board1 [[_]*3 fo…

代码随想录算法训练营第五十三天 1143.最长公共子序列 、1035.不相交的线、53. 最大子序和

代码随想录算法训练营第五十三天 | 1143.最长公共子序列 、1035.不相交的线、53. 最大子序和 1143.最长公共子序列 题目链接&#xff1a;1143. 最长公共子序列 - 力扣&#xff08;LeetCode&#xff09; class Solution {public int longestCommonSubsequence(String text1, …

RK3568平台 USB数据包的收发格式

一.USB硬件拓扑结构 compound device &#xff1a;多个设备组合起来&#xff0c;通过HUB跟Host相连composite device &#xff1a;一个物理设备有多个逻辑设备(multiple interfaces) 在软件开发过程中&#xff0c;我们可以忽略Hub的存在&#xff0c;硬件拓扑图简化如下&#x…