Leetcode 435 无重叠区间

题意理解

        给定一个区间的集合 intervals

        要求需要移除区间,使剩余区间互不重叠 

        目标:最少需要移除几个区间。

解题思路

        采用贪心思路解题,什么是全局最优解,什么是局部最优解。

        全局最优解,删除最少的区间,使剩下的区间不重叠。

        局部最优:尽可能识别重叠的区域,并移除相应区间。

        为了方便识别重叠区间,我们以区间的左边界为准升序排列,左区间一致,以右区间升序排列。

        最终的序列:同起点的区间,小区间总在最前面

        当第i个区间的左边界<第i-1个区间的右边界时,出现重叠区域,需要删除的count++;

        当删除该区间后,第i+1个元素的左边界和最早截止的区间的右边界比较,以保证更多的不重叠区间。

        为了方便统一处理,当记录删除一个区间时:

                将要删除第i的区间右边界设为Math.min(第i-1区间的右边界,第i个区间的右边界)

        

        

1.贪心解题

我们使用count记录发生重叠要删除的区域。

    public int eraseOverlapIntervals(int[][] intervals) {int count=0;//对区间进行排序Arrays.sort(intervals,(o1,o2)->(o1[0] - o2[0]));//遍历区间,总是和最左边的区间比较for(int i=1;i<intervals.length;i++){if(intervals[i][0]<intervals[i-1][1]){//有重叠count++;intervals[i][1]=Math.min(intervals[i][1],intervals[i-1][1]);}//无重叠,不操作}return count;}

2.分析

时间复杂度:O(n logn) 排序所需时间O(nlogn)+遍历的时间O(n)

空间复杂度:O(logn) 排序所需的额外栈空间O(logn)

n为输入数组的大小

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

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

相关文章

最新技术整理3款开源免费直播推流工具,实现实时视频推流、视频拉流,目标端可以是服务器、云平台、移动设备等(附源码)

最新技术整理3款开源免费直播推流工具&#xff0c;实现实时视频推流、视频拉流&#xff0c;目标端可以是服务器、云平台、移动设备等&#xff08;附源码&#xff09;。 什么是推流&#xff1f; 视频推流是指将实时的视频数据从一个源端发送到一个或多个目标端的过程。推流的源…

2023 Intellij IDEA的热部署配置

第一步&#xff1a;导入依赖 <!--热部署--><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-devtools</artifactId></dependency>第二步&#xff1a;配置idea

基于Python的共享单车数据可视化实战

基于Python的共享单车数据可视化实战 引言数据集与技术选择数据集来源技术选择 分析与可视化功能1. 计算骑行时长2. 计算一天骑行时长3. 计算工作日骑行4. 计算骑行距离5. 用户分类6. 经纬度分析 创新点总结 引言 共享单车在城市交通中发挥着越来越重要的作用&#xff0c;对其…

人大金仓Kingbase数据库备份和还原

前言 最近在项目开发过程中&#xff0c;使用了国产数据库人大金仓&#xff08;即Kingbase数据库&#xff09;&#xff0c;在使用过过程中需要对数据库进行备份与还原&#xff0c;在此对相关的命令进行简单介绍&#xff0c;以备不时之需。 Linux环境下安装人大金仓可参考此篇文…

Pytorch项目,肺癌检测项目之二

diameter_dict{} with open(/xunlian/annotations.csv &#xff0c;‘r’) as f: for row in list(csv.reader(f)[1:]): series_uid row[0] annotationCenter_xyz tuple([float(x) for x in row[1:4]]) annotationDiameter_mm float(row[4]) diameter_dict.setdefault(seri…

HTML5文档

目录 HTML5文档结构1.HTML5页面结构2.HTML5新增结构元素 HTML5新增页面元素1.hgroup标记2.figure标记与figcaption标记3.mark标记与time标记4.details标记与summary标记5.progress标记与meter标记6.input标记与datalist标记 HTML5文档结构 HTML5文档结构同样是由头部和主体两部…

【Spring实战】配置多数据源

文章目录 1. 配置数据源信息2. 创建第一个数据源3. 创建第二个数据源4. 创建启动类及查询方法5. 启动服务6. 创建表及做数据7. 查询验证8. 详细代码总结 通过上一节的介绍&#xff0c;我们已经知道了如何使用 Spring 进行数据源的配置以及应用。在一些复杂的应用中&#xff0c;…

MATLAB Mobile - 使用预训练网络对手机拍摄的图像进行分类

系列文章目录 前言 此示例说明如何使用深度学习对移动设备摄像头采集的图像进行分类。 在您的移动设备上安装和设置 MATLAB Mobile™。然后&#xff0c;从 MATLAB Mobile 的“设置”登录 MathWorks Cloud。 在您的设备上启动 MATLAB Mobile。 一、在您的设备上安装 MATLAB M…

[JS设计模式]Flyweight Pattern

Flyweight pattern 享元模式是一种结构化的设计模式&#xff0c;主要用于产生大量类似对象而内存又有限的场景。享元模式能节省内存。 假设一个国际化特大城市SZ&#xff1b;它有5个区&#xff0c;分别为nanshan、futian、luohu、baoan、longgang&#xff1b;每个区都有多个图…

MyBatis关联查询(二、一对多查询)

MyBatis关联查询&#xff08;二、一对多查询&#xff09; 需求&#xff1a;查询所有用户信息及用户关联的账户信息。 分析&#xff1a;用户信息和他的账户信息为一对多关系&#xff0c;并且查询过程中如果用户没有账户信息&#xff0c;此时也要将用户信息查询出来&#xff0c…

C++20形式的utf-8字符串转宽字符串,不依赖编译器编码形式

默认的char[]编码都是要看编译器编译选项的&#xff0c;你选了ANSI那它就是ANSI&#xff0c;你选了UTF8那它就是UTF8. 【注意&#xff1a;经典DevC只支持ANSI编码&#xff08;痛苦&#xff09;&#xff1b;上图是小熊猫DevC&#xff0c;则有这个选项】 这一点对我的代码造成了…

vp与vs联合开发-网口通信(socket)

Socket通信是一种在网络中进行进程间通信的机制。它使用了一种称为套接字&#xff08;Socket&#xff09;的编程接口&#xff0c;通过该接口可以创建、连接、发送和接收数据等操作。 Socket通信中&#xff0c;有两个主要的角色&#xff1a;服务器和客户端。服务器负责监听指定…