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

题目链接:435. 无重叠区间

文章讲解:代码随想录 435. 无重叠区间讲解

视频讲解:贪心算法,依然是判断重叠区间 | LeetCode:435.无重叠区间

思路和解法

题目:
给定一个区间的集合 intervals ,其中 intervals[i] = [starti, endi] 。返回 需要移除区间的最小数量,使剩余区间互不重叠 。
想法:
今天三道题用了三种不同的细节做法,一个是直接在原数组上更新,第二种是用left right记录,第三种是直接在结果数组上更新。第一题是自己AC掉的,照搬了昨天的做法。

class Solution {
public://自定义排序顺序static bool cmp(vector<int>& a, vector<int>& b) {return a[0] < b[0];}int eraseOverlapIntervals(vector<vector<int>>& intervals) {//先按照每个小区间的起始位置排序//遍历一遍,出现重叠就需要删除一个区间,但是删除哪个?要对比一下结束的位置,删掉结束位置靠后的那个区间//用一个变量记录删除数量,需要删除时+1,同时每次删除时把当前区间的结束位置更新为结束位置靠前的那个值//记录删除次数int result = 0;//忘记排序了sort(intervals.begin(), intervals.end(), cmp);//进行遍历for (int i = 1; i < intervals.size(); i++) {if (intervals[i][0] < intervals[i - 1][1]) {result++;intervals[i][1] = min(intervals[i][1], intervals[i - 1][1]);}}return result;}
};

题目链接:763.划分字母区间

文章讲解:代码随想录 763.划分字母区间讲解

视频讲解:贪心算法,寻找最远的出现位置! LeetCode:763.划分字母区间

思路和解法

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

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

返回一个表示每个字符串片段的长度的列表。
想法:
因为要记录每个区间放入结束数组中,所以用left和right做记录。

class Solution {
public:vector<int> partitionLabels(string s) {//统计每个字符出现的最远位置 为什么要27?26不行吗?26也行 不知道为什么讲解里用27int hash[26] = {0};for (int i = 0; i < s.size(); i++) {hash[s[i] - 'a'] = i;}//再遍历一次 每次都更新当前区间出现字符的最远位置,用right记录,当遍历的位置和right相等时,//说明前面这段区间可以划分为一个区间,而且是最短的区间,这样保证了尽可能多地划分区间//用left记录区间起始位置,这样才能计算出区间长度存入结果数组,每次划分出一个区间更新一次leftvector<int> result;int left = 0, right = 0;for (int i = 0; i < s.size(); i++) {right = max(right, hash[s[i] - 'a']);if (i == right) {result.push_back(right - left + 1);left = i + 1;}}return result;}
};

题目链接:56. 合并区间

文章讲解:代码随想录 56. 合并区间讲解

视频讲解:贪心算法,合并区间有细节!LeetCode:56.合并区间

思路和解法

题目:
以数组 intervals 表示若干个区间的集合,其中单个区间为 intervals[i] = [starti, endi] 。请你合并所有重叠的区间,并返回 一个不重叠的区间数组,该数组需恰好覆盖输入中的所有区间 。
想法:
这道题自己想没理清楚,还想着要在原数组上改动还是用left right记录,结果讲解里直接更新结果数组,这种思路明显更符合习惯的思维方式。

class Solution {
public://我决定用和射气球类似的方法来写//还是先排序,然后开始遍历,每次看和前一个区间是否有重叠,如果重叠就需要合并区间//为了记录合并区间的结果,我还是用left和right记录区间的起始和结束位置,那么每次都先判断是否有重叠//用当前区间的起始位置right比较,不重叠记录一次区间并更新left,重叠更新right为更远的结束位置//以上是自己的思路,没理清楚直接看了讲解,发现讲解完全是另一个套路vector<vector<int>> merge(vector<vector<int>>& intervals) {//又忘记排序了 这次讲解也第一次用lambda表达式自定义排序规则sort(intervals.begin(), intervals.end(), [](vector<int>& a, vector<int>& b){return a[0] < b[0];});vector<vector<int>> result;result.push_back(intervals[0]);for (int i = 1; i < intervals.size(); i++) {//当前区间起始位置<=前一个区间的结束位置就是重叠if (result.back()[1] >= intervals[i][0]) {//重叠就要更新右边界result.back()[1] = max(result.back()[1], intervals[i][1]);} else {result.push_back(intervals[i]);}}return result;}
};

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

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

相关文章

JDBC - 结构优化1

JDBC - 结构优化1 文章目录 JDBC - 结构优化1三层架构1 什么是三层架构2 三层架构项目搭建 结构优化1 - 学生信息管理1 封装工具类2 ORM3 DAO 三层架构 1 什么是三层架构 **三层架构&#xff1a;**将程序划分为表示层, 业务逻辑层, 数据访问层三层&#xff0c;各层之间采用接…

vit细粒度图像分类(七)TBNet学习笔记

1.摘要 细粒度鸟类图像识别致力于实现鸟类图像的准确分类&#xff0c;是机器人视觉跟踪中的一项基础性工作。鉴于濒危鸟类的监测和保护对保护濒危鸟类具有重要意义&#xff0c;需要采用自动化方法来促进鸟类的监测。在这项工作中&#xff0c;我们提出了一种新的基于机器人视觉…

代码随想录算法训练营29期|day36任务以及具体安排

第八章 贪心算法 part05 435. 无重叠区间 class Solution {public int eraseOverlapIntervals(int[][] intervals) {Arrays.sort(intervals, (a,b)-> {return Integer.compare(a[0],b[0]);});if(intervals.length 1) return 0;int result 0;for(int i 1 ; i < interva…

新概念英语第二册(49)下

【Key structures】 复合句的语序 复合句可用两种方法构成&#xff1a;一是用连词把从句与主句连接起来&#xff1b;二是用分词结构或不定式。 1、用连词连接的复合句 ① 在复合句中&#xff0c;从句可以是名词从句&#xff08;即起名词的作用&#xff09;。在句子中&#xf…

分布式事务(三)—— 两阶段提交解决方案(2PC)

系列目录&#xff1a; 《分布式事务&#xff08;一&#xff09;—— 事务的基本概念》 《分布式事务&#xff08;二&#xff09;—— CAP和Base理论》 一、常见分布式事务解决方案 两阶段提交&#xff08;2PC&#xff0c;Two-phase Commit&#xff09;TCC补偿模式基于本地消…

SQL 快速参考手册

SQL 语句语法AND / ORSELECT column_name(s) FROM table_name WHERE condition AND|OR conditionALTER TABLEALTER TABLE table_name ADD column_name datatype 或者&#xff1a; ALTER TABLE table_name DROP COLUMN column_name AS (alias)SELECT column_name AS column_alia…

springboot mybatis-plus 项目分层笔记

整体定义 config: 配置项&#xff0c;包含configuration注解 constants: 常量类enums: 枚举 exceptions: 全局异常处理&#xff0c;自定义异常&#xff0c;RestControllerAdvice 注解 fia3: 三大器依据执行顺序&#xff1a;过滤器filter、拦截器interceptor、切面aop 简称 fia…

考研经验总结——政治篇

文章目录 一、前言二、学习情况三、最后 一、前言 不要提前&#xff0c;不要提前&#xff0c;不要提前&#xff0c; 我曾在暑假的时候上了7天左右的政治课&#xff0c;讲真话是很有趣的&#xff0c;并且对于自身的世界观、人生观和价值观的改善也是相当不错的&#xff0c;把我…

算法设计与分析实验:快速选择与单调栈

目录 一、找到K个最接近的元素 1.1 具体思路 1.2 思路展示 1.3 代码实现 1.4 复杂度分析 1.5 运行结果 二、前K个高频元素 2.1 思路一&#xff1a;哈希表 2.2 思路二&#xff1a;快速选择 2.3 思路三&#xff1a;堆 三、柱形图中的最大矩形 3.1 具体思路 3.2 思路…

Mysql单行函数练习

数据表 链接&#xff1a;https://pan.baidu.com/s/1dPitBSxLznogqsbfwmih2Q 提取码&#xff1a;b0rp --来自百度网盘超级会员V5的分享 单行函数练习 单行函数(一行数据返回一个结果) #1.显示系统时间(注:日期时间) #2.查询员工工号,姓名,工资以及提高百分之20后的结果(new…

2024年Java SpringBoot 计算机软件毕业设计题目推荐

博主介绍&#xff1a;✌全网粉丝30W,csdn特邀作者、博客专家、CSDN新星计划导师、Java领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和学生毕业项目实战,高校老师/讲师/同行交流合作✌ 主要内容&#xff1a;SpringBoot、Vue、SSM、HLM…

Flume搭建

压缩包版本&#xff1a;apache-flume-1.9.0-bin.tar 百度盘链接&#xff1a;https://pan.baidu.com/s/1ZhSiePUye9ax7TW5XbfWdw 提取码&#xff1a;ieks 1.解压 tar -zxvf /opt/software/apache-flume-1.9.0-bin.tar.gz -C /opt/module/ 2. 修改文件名 [rootbigdata1 opt]…

【stm32】hal库学习笔记-FSMC连接TFT_LCD

【stm32】hal库学习笔记-FSMC连接TFT LCD 触摸屏结构与原理 LCD模块接口原理图 LCD 接口连接在 FSMC 总线上面&#xff0c;图中的 T_MISO/T_MOSI/T_PEN/T_SCK/T_CS 连接在 MCU 的 PB2/PF11/PB1/PB0/PC13 上&#xff0c;这些信号用来实现对液晶触摸屏的控制&#xff08;支持电阻…

RHCE DNS域名解析服务器

目录 1. 正向解析 1.1 安装必要软件 1.2 配置静态ip 1.3 DNS配置 1.4 测试 2. 反向解析 2.1 关闭安全软件&#xff0c;安装必要软件 2.2 配置静态ip 2.3 DNS配置 2.4 测试 1. 正向解析 1.1 安装必要软件 1.2 配置静态ip 服务器配置 nmcli c modify ens32 ipv4.method man…

Unity中常见的单词

前言 unity中常见的单词学习积累 一.常用的基础词。 new:新建; as:像。。一样; null:对象空值; void:函数返回空值; switch:开关; abstract:抽象的; event:事件&#xff1b; return:返回; class:类; …

如何使用 Mermaid、GitHub 和 VSCode 用代码创建关系图三

Mermaid 系列 如何使用 Mermaid、GitHub 和 VSCode 用代码创建关系图一如何使用 Mermaid、GitHub 和 VSCode 用代码创建关系图二 1.如何创建甘特图 Gantt 甘特图以条形图的形式用作可视化表示。它有效地展示了项目的时间表&#xff0c;揭示了各个项目组件完成所需的持续时间…

leetcode刷题(剑指offer) 509.斐波那契数

509.斐波那契数 斐波那契数 &#xff08;通常用 F(n) 表示&#xff09;形成的序列称为 斐波那契数列 。该数列由 0 和 1 开始&#xff0c;后面的每一项数字都是前面两项数字的和。也就是&#xff1a; F(0) 0&#xff0c;F(1) 1 F(n) F(n - 1) F(n - 2)&#xff0c;其中 n…

Java玩转《啊哈算法》排序综合篇之小哼买书

是诸法空相&#xff0c;不生不灭&#xff0c;不垢不净&#xff0c;不增不减 非目录 缘起代码地址案例桶排序冒泡排序快速排序 缘起 各位大哥大姐&#xff0c;兄弟姐妹们好呀&#xff01;本人最近看了下《啊哈算法》&#xff0c;说来惭愧&#xff0c;买几年了&#xff0c;当初看…

Office提取某一页转成图片

目录结构 前言支持的文件格式代码整理maven依赖文本文档解析转换电子表格解析转换演示文档解析转换PDF解析转换小编代码整理(完整版)特别感谢扩展前言 近期公司需求,要将office文件提取第一页内容转成图片;一番调查后整理如下: 支持的文件格式 文本文档电子表格演示文档…

Java 数据结构篇 二叉树与红黑树详细讲解通俗易懂

二叉树&#xff08;Binary Tree&#xff09; 二叉树&#xff08;Binary Tree&#xff09; 二叉树是一种特殊的树形数据结构&#xff0c;其中每个节点最多有两个子节点&#xff0c;分别称为左子节点和右子节点。二叉树可以是空的&#xff0c;也可以是由根节点以及左右两个子树…