代码随想录算法训练营Day36|LC435 无重叠区间LC763 划分字母区间LC56 合并区间

一句话总结:都是和昨天的用最少箭引爆气球类似的题。

原题链接:435 无重叠区间

计数不重叠的区间的个数,然后用总长度减去这个值即可。

class Solution {
    public int eraseOverlapIntervals(int[][] intervals) {
        Arrays.sort(intervals, (a, b) -> Integer.compare(a[1], b[1]));
        int n = intervals.length;
        int cnt = 1;
        int right = intervals[0][1];
        for (int i = 1; i < n; ++i) {
            if (right <= intervals[i][0]) {
                right = intervals[i][1];
                cnt++;
            }
        }
        return n - cnt;
    }
}

原题链接:763 划分字母区间

利用一个长为26的数组记录每个字母最后出现的位置,然后一趟遍历更新该区间所有字母最后的出现位置,如果right == i,即表明该段区间内所有字母都仅在该区间内出现,而不会在区间外。将该区间长度加入答案即可。

class Solution {
    public List<Integer> partitionLabels(String s) {
        List<Integer> ans = new ArrayList<>();
        int n = s.length();
        int[] lastPos = new int[26];
        for (int i = 0; i < n; ++i) {
            lastPos[s.charAt(i) - 'a'] = i; 
        }
        int left = 0, right = 0;
        for (int i = 0; i < n; ++i) {
            right = Math.max(right, lastPos[s.charAt(i) - 'a']);
            if (i == right) {
                ans.add(right - left + 1);
                left = right + 1;
            }
        }
        return ans;
    }
}

原题链接:56 合并区间

区间的经典题了。排序后先将第一段区间加入答案,然后往后遍历,如果右端点大于当前遍历区间左端点,那么将该段区间右端点更新为当前遍历区间的右端点与原本右端点的最大值,否则将新的区间加入答案,同时更新右端点值为该遍历端点的右端点。

class Solution {
    public int[][] merge(int[][] intervals) {
        Arrays.sort(intervals, (a, b) -> Integer.compare(a[0], b[0]));
        List<int[]> ans = new ArrayList<>();
        for (int i = 0; i < intervals.length; ++i) {
            int left = intervals[i][0], right = intervals[i][1];
            if (ans.isEmpty() || ans.get(ans.size() - 1)[1] < left) {
                ans.add(new int[]{left, right});
            } else ans.get(ans.size() - 1)[1] = Math.max(right, ans.get(ans.size() - 1)[1]);
        }
        return ans.toArray(new int[ans.size()][]);
    }
}

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

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

相关文章

Linux进程调度CFS

1. 进程 1.1 什么是进程&#xff1f; 操作系统作为硬件的使用层&#xff0c;提供使用硬件资源的能力&#xff0c;而进程作为操作系统使用层&#xff0c;提供使用操作系统抽象出的资源层的能力。进程是指计算机中已运行的程序。进程本身不是基本的运行单位&#xff0c;而是线程…

EasyCVR在银河麒麟V10系统中启动异常及解决方法

安防监控视频平台EasyCVR具备较强的兼容性&#xff0c;它可以支持国标GB28181、RTSP/Onvif、RTMP&#xff0c;以及厂家的私有协议与SDK&#xff0c;如&#xff1a;海康ehome、海康sdk、大华sdk、宇视sdk、华为sdk、萤石云sdk、乐橙sdk等。平台兼容性强&#xff0c;支持Windows系…

css-基本问题

margin 塌陷问题 什么是margin 塌陷&#xff1f; 第一个子元素的上 margin 会作用在父元素上&#xff0c;最后一个子元素的下 margin 会作用在父元素上。 出现的原因&#xff1a; 在早期的时候&#xff0c;制定者认为&#xff0c;第一个子元素的上margin 给父元素&#xff…

刷题之贪心3

前言 大家好&#xff0c;我是jiantaoyab&#xff0c;这篇文章将给大家介绍贪心算法和贪心算法题目的练习和解析&#xff0c;贪心算法的本质就是每一个阶段都是局部最优&#xff0c;从而实现全局最优。加上这篇文章一共有30道贪心题目了&#xff0c;加油! 坏了的计算器 题目分析…

Web举例:防火墙二层,上下行连接交换机的主备备份组网

Web举例&#xff1a;防火墙二层&#xff0c;上下行连接交换机的主备备份组网 介绍了业务接口工作在二层&#xff0c;上下行连接交换机的主备备份组网的Web举例。 组网需求 如图1所示&#xff0c;两台FW的业务接口都工作在二层&#xff0c;上下行分别连接交换机。FW的上下行业…

【爬虫基础】第2讲 使用Urllib库创建第一个爬虫程序

Urllib 是 Python 的标准库&#xff0c;它提供了一系列用于处理 URL 的函数和类&#xff0c;包括发送 HTTP 请求、处理 HTTP 响应、解析 URL 等功能。可以使用 urllib 来编写简单的网络爬虫。 request&#xff1a;它是最基本的HTTP请求模块&#xff0c;可以用来模拟发送请求。只…

2024年 (第十届)全国大学生统计建模大赛优秀论文解析——中国经济发展与碳排放库兹涅茨曲线的验证研究

一、摘要 二、引言 三、文献综述 四、研究方法 五、数据来源与分析 5.1变量选择 5.2数据来源 六、模型研究与建立过程 七、结果分析 八、结论及建议 参考文献: 更多资料请联系CSDN 建模忠哥小师妹

【WEEK4】 【DAY5】AJAX第二部分【中文版】

2024.3.22 Friday 接上文【WEEK4】 【DAY4】AJAX第一部分【中文版】 目录 8.4.Ajax异步加载数据8.4.1.新建User.java8.4.2.在pom.xml中添加lombok、jackson支持8.4.3.更改tomcat设置8.4.4.修改AjaxController.java8.4.5.新建test2.jsp8.4.5.1.注意&#xff1a;和WEB-INF平级&…

【SpringBoot整合系列】SpringBoot3.x整合Swagger

目录 产生背景官方解释&#xff1a;作用SpringBoot3整合Swagger注意事项swagger3 常用注解SpringBoot3.x整合Swagger1.创建工程(jdk:17,boot:3.2.4)2.引入pom依赖3.application.yml添加配置4.添加swagger3.0配置5.控制器层(Controller)6.模型层(Model)7.启动并测试【Get请求接口…

AlphaGPT在法律大模型圈子火了,案件仅需3分钟搞定

AI不断应用在新的领域&#xff0c;法律行业也不例外。法律AI大模型的到来无疑给业内法律人造成了一定的冲击&#xff0c;但也有更多专业人士指出&#xff0c;法律AI是未来的大趋势&#xff0c;我们要学会利用它&#xff0c;而不是逃避它。 AlphaGPT是法律AI大模型的代表性产品…

[伴学笔记]02-应用视角的操作系统 [南京大学2024操作系统]

文章目录 前言jyy: 02-应用视角的操作系统Everything(二进制程序) 状态机什么是状态机? 操作系统上的应用程序理解高级语言程序 信息来源: 前言 督促自己,同时分享所得,阅读完本篇大约需要10分钟,希望为朋友的技术精进之路尽到绵薄之力.码字不易,望能给个点赞和收藏,以激励笔…

docker安装redis 6.2.7 并 远程连接

阿里云ecs服务器&#xff0c;docker安装redis 6.2.7 并 远程连接 文章目录 阿里云ecs服务器&#xff0c;docker安装redis 6.2.7 并 远程连接1. 拉取redis镜像2. 查看是否下载成功3. 挂载配置文件4. 下载reids配置文件(redis.conf)5. docker创建redis容器6. 查看redis容器运行状…

css预处理器scss的使用如何全局引入

目录 scss 基本功能 1、嵌套 2、变量 $ 3、mixin 和 include 4、extend 5、import scss 在项目中的使用 1、存放 scss 文件 2、引入 variables 和 mixins 2-1、局部引入 2-2、全局引入 3、入口文件中引入其他文件 项目中使用 css 预处理器&#xff0c;可以提高 cs…

boot整合xfire

最近换了项目组&#xff0c;框架使用的boot整合的xfire&#xff0c;之前没使用过xfire&#xff0c;所以写个例子记录下&#xff0c;看 前辈的帖子 整理下 pom文件 <parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot…

上位机图像处理和嵌入式模块部署(qmacvisual图像识别)

【 声明&#xff1a;版权所有&#xff0c;欢迎转载&#xff0c;请勿用于商业用途。 联系信箱&#xff1a;feixiaoxing 163.com】 所谓图像识别&#xff0c;就是对图像进行分类处理&#xff0c;比如说判断图像上面的物体是飞机、还是蝴蝶。在深度学习和卷积神经网络CNN不像现在这…

企微获客助手功能,行为触发如何实现回传的?

获客助手&#xff0c;这个听起来就相当酷炫的名字&#xff0c;它实际上是一个帮助企业将推广流量快速导入企业微信的神器。通过它&#xff0c;企业可以吸引越来越多的用户加为好友&#xff0c;从而建立起更紧密的客户关系。但是&#xff0c;如何进一步提升导入企业微信的流量质…

IntersectionObserver:实现滚动动画、懒加载、虚拟列表

认识 浏览器自带的适用于 「监听元素与视窗交叉状态」 的观察器&#xff1a;「IntersectionObserver&#xff08;交叉观察器&#xff09;」 IntersectionObserver 是一种 JavaScript API&#xff0c;它提供了一种异步监测元素与其祖先容器或视口之间交叉状态的方法。简单来说&…

数据库备份工具(实现数据定时覆盖)

数据库备份工具&#xff08;实现数据定时覆盖&#xff09; 永远热爱&#xff0c;永远执着&#xff01; 工具介绍 自动化测试数据库更新调度程序 这段 Python 脚本自动化了每天定时从生产数据库更新测试数据库的过程。它利用了 schedule 库来安排并执行每天指定时间的更新任务…

(vue)el-table表格回显返回的已勾选的数据

(vue)el-table表格编辑时回显返回的已勾选的数据 tableData数据&#xff1a; el-tableref"multipleTable":data"tableData"... >...<el-table-column prop"result" label"相关.." align"center" width"220"…

【Java程序设计】【C00344】基于Springboot的船舶维保管理系统(有论文)

基于Springboot的船舶维保管理系统&#xff08;有论文&#xff09; 项目简介项目获取开发环境项目技术运行截图 项目简介 项目获取 &#x1f345;文末点击卡片获取源码&#x1f345; 开发环境 运行环境&#xff1a;推荐jdk1.8&#xff1b; 开发工具&#xff1a;eclipse以及i…