代码随想录算法训练营第三十六天| 435. 无重叠区间、 763.划分字母区间、56. 合并区间

435

题目:

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

题目链接:435. 无重叠区间 - 力扣(LeetCode)

思路:

先按起始位置升序排列,然后判断是否有重合,如果重合就count+1,然后判断哪个区间的end更大,两个区间肯定要删除一个,end更大的容易和后续重合故删。

详情:代码随想录 (programmercarl.com)

代码:

class Solution {public int eraseOverlapIntervals(int[][] intervals) {Arrays.sort(intervals,(a,b)->Integer.compare(a[0],b[0]));int count = 0;for(int i=1;i<intervals.length;i++){if(intervals[i][0]>=intervals[i-1][1])continue;else{count++;if(intervals[i-1][1]<=intervals[i][1]) //i的终止位置大,更容易影响后续故删{intervals[i][0]=intervals[i-1][0];intervals[i][1]=intervals[i-1][1];}else{//i-1的终止位置大,更容易影响后续故删intervals[i-1][0]=intervals[i][0];intervals[i-1][1]=intervals[i][1];                   }}}return count;}
}

763

题目:

给你一个字符串 s 。我们要把这个字符串划分为尽可能多的片段,同一字母最多出现在一个片段中。

注意,划分结果需要满足:将所有划分结果按顺序连接,得到的字符串仍然是 s 。

返回一个表示每个字符串片段的长度的列表。

题目链接:763. 划分字母区间 - 力扣(LeetCode)

思路:

使用for循环,在其中判断当前对应的字符在字符串最后一次出现下标,在这个下标之前的所有字符都要计算lastindexof,当i==index则是一个分段。

详情:代码随想录 (programmercarl.com)

代码:

class Solution {public List<Integer> partitionLabels(String s) {List <Integer> len =new ArrayList<Integer>(); int index =-1;//片段的endint flag=0;//辅助标识片段startint start=-1;for(int i=0;i<s.length();i++){if(flag==0) {start=i;flag=1;}String str =Character.toString(s.charAt(i));int last =s.lastIndexOf(str);if(last > index)index = last;if(i==index)    {int temp =index-start+1;len.add(temp);flag =0;start=-1;index =-1;}}return len;}
}

56

题目:

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

题目链接:56. 合并区间 - 力扣(LeetCode)

思路:

先判断前者和后者是否有交集,有的话将合并的结果存在后者,然后另开一个动态数组存储结果,只需要存合并后的区间和不相交的区间。

详情:代码随想录 (programmercarl.com)

代码:

class Solution {public int[][] merge(int[][] intervals) {int index = intervals.length - 1;//为了处理24行的边界情况if(index==0) return intervals;//只有一个区间Arrays.sort(intervals, (a, b) -> Integer.compare(a[0], b[0]));//按start升序排序for (int i = 1; i < index + 1; i++) { //有交集则将i-1和i的区间合并存储到i里if (intervals[i][0] > intervals[i - 1][1])continue;else {intervals[i][0] = Math.min(intervals[i - 1][0],intervals[i][0]);intervals[i][1] = Math.max(intervals[i-1][1],intervals[i][1]);}}LinkedList<int[]> que = new LinkedList<>();int count = 0;for (int i = 0; i < index; i++) { //判断前者是否是后者子区间,如果是则继续,如果不是则保存if (intervals[i][0] >= intervals[i + 1][0] && intervals[i][1] <= intervals[i + 1][1])continue;else {que.add(intervals[i]);count++;}}//边界情况if (intervals[index - 1][0] >= intervals[index][0] && intervals[index - 1][1] <= intervals[index][1]) {que.add(intervals[index]);count++;} else {que.add(intervals[index]);count = count + 1;}return que.toArray(new int[count][]);}
}

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

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

相关文章

Nacos 入门篇---服务端如何处理客户端的服务注册请求?(三)

一、引言 ok呀&#xff0c;上个章节我们讲了Nacos客户端的服务自动注册&#xff0c;今天我们来看看服务端接收到了客户端的服务注册请求&#xff0c;服务端都做了哪些事情&#xff5e; 二、目录 目录 一、引言 二、目录 三、回顾上节内容&#xff1a; 四、Nacos 服务代码入…

工作流引擎项目解析(二)

流程变量设置于获取 Activiti--流程变量_runtimeservice.setvariable-CSDN博客 Process Variables | docs.camunda.org 设置 启动时设置任务完成时设置runtimeService.setvars…()taskservice.setvars…() ProcessEngine processEngine ProcessEngines.getDefaultProcessEn…

python项目练习——24、线旅游预订系统

用户管理功能: 用户注册:用户可以填写用户名和密码进行注册。用户登录:注册过的用户可以使用用户名和密码登录系统。用户资料管理:用户可以查看和编辑自己的个人资料。旅游产品管理功能: 产品列表展示:展示可预订的旅游产品列表。产品搜索:用户可以根据关键字、目的地、…

Nginx 基础应用实战 04 在公网配置配置HTTPS

Nginx 基础应用实战 04 在公网配置配置HTTPS Nginx配置 server {listen 443 ssl;server_name aa.abc.com;ssl_certificate /data/cert/server.crt;ssl_certificate_key /data/cert/server.key;}免费签名 https://freessl.cn 阿里云 腾讯云 Nginx配置 serve…

Springboot整合nacos报错无法连接nacos

报错信息&#xff1a;Nacos com.alibaba.nacos.api.exception.NacosException: Client not connected, current status:STARTING 关于这个报错的原因有很多&#xff1a;如Nacos未启动、网络问题、配置问题、版本不兼容问题等&#xff0c;我的报错原因主要是版本不兼容。 下面…

5.9 mybatis之callSettersOnNulls作用

文章目录 1. 当callSettersOnNullstrue时2. 当callSettersOnNullsfalse时 在mybatis的settings配置参数中有个callSettersOnNulls参数&#xff0c;官方解释为&#xff1a;指定当结果集中值为 null 的时候是否调用映射对象的 setter&#xff08;map 对象时为 put&#xff09;方法…

PostgreSQL入门到实战-第三十弹

PostgreSQL入门到实战 PostgreSQL教程网站官网地址PostgreSQL概述更新计划 PostgreSQL教程网站 https://www.postgresqltutorial.com/ 官网地址 声明: 由于操作系统, 版本更新等原因, 文章所列内容不一定100%复现, 还要以官方信息为准 https://www.postgresql.org/PostgreS…

【系统分析师】计算机网络

文章目录 1、TCP/IP协议族1.1 DHCP协议1.2 DNS协议1.3网络故障诊断 2、网路规划与设计2.1逻辑网络设计2.2物理网络设计2.3 分层设计 3、网络接入3.1 接入方式3.2 IPv6地址 4、综合布线技术5、物联网5.1物联网概念与分层5.2 物联网关键技术 6、云计算7、网络存储技术&#xff08…

neo4j使用详解(结尾、neo4j的java driver使用模板及工具类——<可用于生产>)

Neo4j系列导航: neo4j安装及简单实践 cypher语法基础 cypher插入语法 cypher插入语法 cypher查询语法 cypher通用语法 cypher函数语法 neo4j索引及调优 neo4j java Driver等更多 1. 简介 本文主要是java使用neo4j driver操作neo4j的模板项目及非常有用的工具类,主要包括: 图…

Vector - CAPL - XCP介绍_02

前面我们介绍了关于使用vector XCP License后&#xff0c;通过CAPL对XCP协议进行连接、断开和获取当前XCP连接状态的函数&#xff0c;本篇文章不做过多的其他赘述&#xff0c;我们继续介绍CAPL控制XCP相关的其他函数。 目录 xcpActivate 代码示例 xcpDeactivate xcpActiva…

数据库-Redis(9)

目录 41.AOF重写日志时,有新数据写入怎么办呢? 42.主线程Fork出子进程是如何复制内存数据的?

LeetCode617:合并二叉树

题目描述 给你两棵二叉树&#xff1a; root1 和 root2 。 想象一下&#xff0c;当你将其中一棵覆盖到另一棵之上时&#xff0c;两棵树上的一些节点将会重叠&#xff08;而另一些不会&#xff09;。你需要将这两棵树合并成一棵新二叉树。合并的规则是&#xff1a;如果两个节点重…

8:系统开发基础--8.1:软件工程概述、8.2:软件开发方法 、8.3:软件开发模型、8.4:系统分析

转上一节&#xff1a; http://t.csdnimg.cn/G7lfmhttp://t.csdnimg.cn/G7lfm 课程内容提要&#xff1a; 8&#xff1a;知识点考点详解 8.1&#xff1a;软件工程概述 1.软件的生存周期 2.软件过程改进—CMM Capability Maturity Model能力成熟度模型 3.软件过程改进—CMMI—…

万字长文:Phoenix面试题及参考答案(持续更新)

目录 描述一下Phoenix的架构及其组件。 解释Phoenix如何处理SQL查询并将其转换为HBase操作。

2024.4.14

#define _CRT_SECURE_NO_WARNINGS #include<stdio.h> #include<stdlib.h> #include<stdbool.h>/*/*给你一个整数数组 nums 。 如果一组数字(i, j) 满足 nums[i] nums[j] 且 i < j &#xff0c;就可以认为这是一组 好数对 。 返回好数对的数目。int numId…

vmware安装win10及ubuntu

安装win10 新建一个文件夹 选择刚才创建的文件夹 选择需要保存文件的位置&#xff0c;还是选择刚才创建的文件夹 选择自定义硬件 选择下载的win10镜像iso文件,导入后&#xff0c;点击完成即可 接下来就是下一步 没有此电脑&#xff0c;可以点击个性化-》主题-》桌面设置…

SecureCRT日志记录的7个经典配置记录与14个环境变量(%Y-%M-%D_%H_%S_session.log %t )

每次更换电脑、主机或者环境都需要配置一遍SecureCRT的参数。感觉就最近十年都已经设置过上百次了。其实设置没什么特别的&#xff0c;只是经过不断地打磨&#xff0c;主打的就是一个经济实用。经常忘记&#xff0c;特此记录。 配置方式 建议直接配置默认session&#xff1a;…

Linux journalctl命令详解

文章目录 1.介紹2.概念设置system time基本的日志查阅方法按时过滤日志&#xff08;by Time&#xff09;显示本次启动以来的日志&#xff08;Current Boot&#xff09;按Past Boots按时间窗口按感兴趣的消息筛选按unit按进程、用户、Group ID按组件路径显示内核消息按消息优先级…

Bash 编程精粹:从新手到高手的全面指南之逻辑控制

在 Unix 和 Linux 系统中&#xff0c;Bash&#xff08;Bourne-Again Shell&#xff09;是一种广泛使用的 shell&#xff0c;提供了强大的脚本编程能力。本文将详细介绍 Bash 脚本中的逻辑控制结构&#xff0c;包括条件判断、分支选择、循环控制以及退出控制等内容。 条件判断&…

Centos安装MySQL提示公钥尚未安装

一、问题 在Centos7.9使用yum安装MySQL时出现错误&#xff0c;提示&#xff1a;mysql-community-server-5.7.44-1.el7.x86_64.rpm 的公钥尚未安装&#xff0c;如下图所示&#xff1a; 执行命令&#xff1a;systemctl start mysqld也提示错误&#xff1a;Failed to start mysq…