代码随想录Day36 | 435. 无重叠区间 763.划分字母区间 56. 合并区间

数字IC面试核心:从MUX基础到Glitch-Free时钟切换电路深度剖析 本文深入剖析数字IC设计中的MUX基础原理及其在Glitch-Free时钟切换电路中的应用。从二选一MUX的门级实现到时钟切换中的毛刺问题,详细讲解了同步切换机制和工程优化技巧,帮助工程师掌握高速时钟电路设计的核心要点。 阅读详情

代码随想录Day36 | 435. 无重叠区间 763.划分字母区间 56. 合并区间

435.无重叠区间

文档讲解:代码随想录
视频讲解: 贪心算法,依然是判断重叠区间 | LeetCode:435.无重叠区间
状态

本质和昨天的射箭差不多,只不过需要注意这次两个区间的左值和右值相同不属于重叠。可以通过先寻找不重叠的区间,然后让总区间数-不重叠区间数就是需要移除的区间

//两个区域 左边界和另一个区域右边界相同不算重叠
class Solution {
public:
    static bool cmp(vector<int>& a,vector<int>& b)
    {
        return a[0]<b[0];
    }
    int eraseOverlapIntervals(vector<vector<int>>& intervals) {
        int leave = 1;
        sort(intervals.begin(),intervals.end(),cmp);
        for(int i = 1;i<intervals.size();i++)
        {
            //记录不重叠的个数
            if(intervals[i][0]>=intervals[i-1][1])
            {
                leave++;
            }
            else
            {
                intervals[i][1] = min(intervals[i][1],intervals[i-1][1]);
            }
        }
        //重叠个数就是总个数-不重叠个数
        return intervals.size()-leave;

    }
};

763.划分字母区间

文档讲解:代码随想录
视频讲解: 贪心算法,寻找最远的出现位置! LeetCode:763.划分字母区间
状态

我们需要知道每个字母在字符串中出现的最后一个位置,用来当作该字母区间的右边界。
//最多划分,一旦下标i之前出现的字母,在i之后没有出现那么就需要切割出来
//存储每个字母出现的最后下标
//遍历整个字符串
//i+1 < check[s[i]-‘a’] --> 比较check[s[i+1]-‘a’] 和 check[s[i]-‘a’] 取大值
//i+1 >= check[s[i]-‘a’] 分割 更新边界 为check[s[i+1]-‘a’]

class Solution {
public:
    vector<int> partitionLabels(string s) {
        vector<int> check(26,-1);
        for(int i = 0;i<s.size();i++)
        {
            check[s[i]-'a'] = i;
        }
        vector<int> res;
        int right = check[s[0]-'a'];
        int left = 0;
        //遍历寻找
        for(int i = 1;i<s.size();i++)
        {
            //当当前的下标大于了重叠范围更新
            if(i > right)
            {
                right = check[s[i]-'a'];
                res.push_back(i-left);
                left = i;
            }
            else
            {
                right= max(right,(check[s[i]-'a']));
            }
            if(right == s.size()-1)
            {
                res.push_back(right+1-left);
                break;
            }
        }
        return res;
    }
};

使用了两个临时变量来存储边界,以作为最后的结果计算。这道题的方法和下面那道题一样的。

56.合并区间

文档讲解:代码随想录
视频讲解: 贪心算法,合并区间有细节!LeetCode:56.合并区间
状态

使用两个临时变量来存储边界,左边界只有在下一个区间的左值大于此时的右边界时才更新,而右边界是需要不断去更新判断的。

//记录left 和 right 
//right 不断更新最大值
//当下一个区间的左值大于right时,更新left为当前左值,right 为当前区间右值
class Solution {
public:
    static bool cmp(vector<int>& a,vector<int>& b)
    {
        return a[0]<b[0];
    }
    vector<vector<int>> merge(vector<vector<int>>& intervals) {
        sort(intervals.begin(),intervals.end(),cmp);
        int left = intervals[0][0];
        int right = intervals[0][1];
        vector<vector<int>> res;
        for(int i=1;i<intervals.size();i++)
        {
            if(intervals[i][0] > right)
            {
                vector<int> temp{left,right};
                left = intervals[i][0];
                right = intervals[i][1];
                res.push_back(temp);
            }
            else
            {
                right = max(right,intervals[i][1]);
            }
        }
        //处理最后一个数组的情况
        res.push_back(vector<int> {left,right});
        return res;
    }
};
【原理图PCB专题】Cadence 17.4版本导出excel版本坐标文件 Cadence 17.4版本导出坐标文件往往都是txt格式,并且无标题、导出时间、导出设计工程多名称等信息。那么怎么样才能导出有带这些信息的excel版本并格式好看的坐标文件呢? 阅读详情

相关推荐

安卓无障碍服务保活实战:如何用AccessibilityService实现后台常驻(附完整代码)

本文深入解析如何利用Android无障碍服务(AccessibilityService)实现后台服务保活,涵盖多版本系统适配、前台服务集成、开机自启机制等关键技术。通过详细的Kotlin代码示例和合规性指导,帮助开发者构建稳定可靠的后台服务解决方案,同时避免因滥用无障碍服务导致的应用下架风险。

milk5的博客 1072

【Day36】代码随想录之贪心_435. 无重叠区间 _763.划分字母区间 _56. 合并区间

在更新右边界的时候,如果遇到 上一个的右边界 大于 下一个的左边界,说明有重叠,需要更新右边界。忽略了vector<int>按照左边界排序,结果左边是从小到大,不会重叠的,遇到重叠处,两个的左边界与前面都不重叠,最后留下哪一个,取决于哪一个的右边界更小,与后面重叠的概率就越小。直接想法是统计每个位置的字母最后出现的位置,在这个区间内如果有更大的位置,字符串的长度就要往后增加,终止条件是到达这个区间内字母最后出现位置的最大值。给定一个区间的集合,找到需要移除区间的最小数量,使剩余区间互不重叠。

weixin_46275441的博客 871

寒假实训笔记day01——认识M4单片机之STM32F405RGT6

认识M4单片机之STM32F405RGT6(含义、规格、参数)

weixin_47200070的博客 8551

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

此时问题就是要求非交叉区间的最大个数。这里记录非交叉区间的个数还是有技巧的,如图:区间,1,2,3,4,5,6都按照右边界排好序。当确定区间 1 和 区间2 重叠后,如何确定是否与 区间3 也重贴呢?就是取。

qq_60513199的博客 1146

图解B树的原理及操作

本文主要参考:https://blog.csdn.net/shenchaohao12321/article/details/83243314 1. B树 1.1 B树的定义 B树也称B-树,它是一颗多路平衡查找树。我们描述一颗B树时需要指定它的阶数,阶数表示了一个结点最多有多少个孩子结点,一般用字母m表示阶数。当m取2时,就是我们常见的二叉搜索树。 一颗m阶的B树定义如下: 1)每个结点最多有m-1个关键字。 2)根结点最少可以只有1个关键字。 3)非根结点至少有Math.ceil(m/2)-

jinking01的专栏 3万+

【星火】海思HI3516C开发板实战:基于LVGL与MPP库的行车记录仪/电子显微镜方案

本文详细介绍了基于海思HI3516CV500开发板,结合LVGL图形库与海思MPP媒体处理平台,实现行车记录仪与电子显微镜方案的完整实战过程。内容涵盖从系统环境搭建、驱动配置到应用开发的全流程,重点解析了MPP视频流处理管道与LVGUI界面协同工作的核心机制,为嵌入式音视频开发提供了可复用的参考方案。

weixin_42126677的博客 160

代码随想录Day36|435.无重叠区间、763.划分字母区间、56.合并区间

435.无重叠区间、763.划分字母区间、56.合并区间

weixin_46620779的博客 1018

利用SIMULINK搭建一个16QAM调制解调收发系统

1发送模块设计 根据前面介绍的理论知识,我们可以知道16QAM的基本结构,首先我来设计QAM发送段的SIMULINK仿真模块。 图1 16QAM的发送端模块 他的基本工作流程为:将信号通过两路升余弦滤波器,得到滤波以后的信号,滤波器的作用就是为了防止码间干扰。然后将滤波以后的信号和SIN,COS相乘得到调制信号,将调制 下面一一介绍每个模块的具体参数设置以及各个部分信号的波形图。 图2 产生随机数据的信号源 第一部分信号是产生一组随机的数字,作为信源,第二个模块将信号...

FPGA/MATLAB学习教程/源码/项目合作开发 4776

代码随想录刷题day36 435. 无重叠区间;763.划分字母区间;56. 合并区间

代码随想录刷题day36

weixin_43127049的博客 193

如何使用Docker部署OpenClaw小龙虾(docker compose快速部署)

本文以飞牛NAS为例💻,带大家一步步完成Docker部署OpenClaw小龙虾🦞。不管你是用NAS、云服务器还是本地电脑,只要支持Docker,都可以参考这个步骤来安装部署⚡

XiaoqiangClub的博客 727

CloudCompare 二次开发(6)——插件中拖拽添加Qt窗口(区域生长算法为例)

手动拖拽的方式搭建Qt对话框界面的制作流程,以PCL中的点云区域生长算法为例进行制作。

点云侠的博客 2151

代码随想录算法训练营day36 | 435. 无重叠区间,763.划分字母区间,56. 合并区间

关于区间重合的题目,首先要进行排序,相邻区间尽可能的重叠;然后判断是寻找重合区间还是非重合区间,确定处理逻辑;最后编写程序还要注意边界的界定。

2301_77450803的博客 686

HTML蓝色动态爱心(完整代码)

HTML语言实现蓝色动态爱心的完整代码。

AIGC 8万+

代码随想录Day.36 | 435. 无重叠区间、763. 划分字母区间、56. 合并区间

2. 假如存在另一堆区间,这堆区间有着与上一堆区间不同的最小区间,是否可以证明这两堆区间最终要移除至只剩两个区间?假如有两堆各自有最小公共区间的区间,如果只剩余一个区间a,那么这个区间是有可能与两个最小公共区间重叠的,但是,一定可以找到另外两个区间b,c,其中,b,c和a的公共区间不同。然后根据起始坐标从大到小排列,如果起始坐标相等,按照末尾坐标从大到小排列后,遍历区间,依次吞并可以吞并的区间。3. 所以,使得剩余区间互不重叠的最小移除数目,是区间总数 - 最小重叠区间个数。这就跟上一个的复杂解法类似了。

papilon_的博客 484

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

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

本题与昨天引爆气球的那道题思路是一致的,都是考察重叠区间的问题。本题要求同一字母最多出现在在一个片段中,一开始想到用双指针的方式实现,发现还不够熟练使用双指针,就延续上题划分区间的思路求解。本题依旧是区间重叠类型的题目,思想上不难,重点和难点在于如何使区间进行合并。今天几道都是区间重叠类型的题目,实现思想上大体相同,但是在具体实现逻辑上存在一些差异,后两题的实现就有些巧妙,但是基本上做过一遍之后就基本能够记住方法。

m0_68682181的博客 789

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

Day36代码随想录贪心part05:435. 无重叠区间、763.划分字母区间、56. 合并区间

题意:字符串 S 由小写字母组成。我们要把这个字符串划分为尽可能多的片段,同一字母最多出现在一个片段中。返回一个表示每个字符串片段的长度的列表。补充:其实下列代码还是应该考虑intervals为空的情况的。**思路:**在遍历的过程中相当于是要找每一个字母的边界,一个不重叠的区间数组,该数组需恰好覆盖输入中的所有区间。思路:还是基本和之前 435. 无重叠区间 相似的思路。此时前面出现过所有字母,最远也就到这个边界了。表示若干个区间的集合,其中单个区间为。请你合并所有重叠的区间,并返回。

Estrellazhu的博客 515

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

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

此时问题就是要求非交叉区间的最大个数。这里记录非交叉区间的个数还是有技巧的,如图:区间,1,2,3,4,5,6都按照右边界排好序。当确定区间 1 和 区间2 重叠后,如何确定是否与区间3也重贴呢?就是取 区间1 和 区间2 右边界的最小值,因为这个最小值之前的部分一定是 区间1 和区间2 的重合部分,如果这个最小值也触达到区间3,那么说明 区间 1,2,3都是重合的。接下来就是找大于区间1结束位置的区间,是从区间4开始。区间4结束之后,再找到区间6,所以一共记录非交叉区间的个数是三个。

weixin_42179093的博客 221

代码随想录【Day36】贪心| 435. 无重叠区间、763. 划分字母区间、56. 合并区间

贪心算法

傅里叶变不出的博客 344

代码随想录刷题Day36 | 435. 无重叠区间 | 763. 划分字母区间 | 56. 合并区间

代码随想录刷题Day36 | 435. 无重叠区间 | 763. 划分字母区间 | 56. 合并区间

DUM1615的博客 333

代码随想录day36|435. 无重叠区间|763.划分字母区间|56. 合并区间 |Golang

笔记

weixin_42161901的博客 788

代码随想录训练营Day36| 435. 无重叠区间 763.划分字母区间 56. 合并区间

763. 划分字母区间 - 力扣(LeetCode)435. 无重叠区间 - 力扣(LeetCode)56. 合并区间 - 力扣(LeetCode)435. 无重叠区间。763.划分字母区间。435. 无重叠区间。763.划分字母区间。

weixin_44174445的博客 250

代码随想录算法训练营day36|LeetCode 435 无重叠区间、LeetCode 763 划分字母区间、LeetCode 56 合并区间

代码随想录算法训练营day36

qq_51588716的博客 344

代码随想录day36|贪心算法 435. 无重叠区间 763.划分字母区间 56. 合并区间

学习记录

rogue1207的博客 300

代码随想录刷题Day36 | 435.无重叠区间、763.划分字母区间、56.合并区间

本次主要是贪心算法。

weixin_45744752的博客 365

代码随想录Day36—435. 无重叠区间 763.划分字母区间 56. 合并区间

代码随想录Day36——435. 无重叠区间 763.划分字母区间 56. 合并区间 435. 无重叠区间 照右边界排序,从左向右记录非交叉区间的个数。最后用区间总数减去非交叉区间的个数就是需要移除的区间个数。 763.划分字母区间 在遍历的过程中相当于是要找每一个字母的边界,如果找到之前遍历过的所有字母的最远边界,说明这个边界就是分割点了 前面出现过所有字母,最远也就到这个边界 56. 合并区间 先排序,让所有的相邻区间尽可能的重叠在一起 按照左边界从小到大排序之后,如果 intervals[

lizhiqiang502的博客 74

代码随想录训练营day36|435、无重叠区间;763、划分字母区间;56、合并区间

字符串 S 由小写字母组成。我们要把这个字符串划分为尽可能多的片段,同一字母最多出现在一个片段中。返回一个表示每个字符串片段的长度的列表。注意: 可以认为区间的终点总是大于它的起点。区间 [1,2] 和 [2,3] 的边界相互“接触”,但没有相互重叠。如果重叠了,要把pre更新为小的那个,不能简单把pre更新为上一个边界,因为上一个边界是可能被去除的区间。给定一个区间的集合,找到需要移除区间的最小数量,使剩余区间互不重叠。给出一个区间的集合,请合并所有重叠的区间。尝试这样去解决,但无法ac。

weixin_43561267的博客 98
上一篇: 代码随想录Day35 | 860.柠檬水找零 406.根据身高重建队列 452. 用最少数量的箭引爆气球
下一篇: 代码随想录Day37 | 738.单调递增的数字 968.监控二叉树
sRiddle
博客等级 码龄7年 528粉丝 63原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值