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

435.无重叠区间

思路:找到删除几个区间,让题目给出的区间没有重叠部分,那么首先我们先进行排序(按照左边界排序),那么下一个区间的左边界小于上一个区间的右边界,那么这两个区间一定有重叠的部分,说明这两个区间必须要移除掉一个,那么这两个移除掉哪一个呢?应该移除掉两个区间中,右边界更大的那一个,这样才能最大限度避免对于下一个区间左边界与这两个区间重复!那么如果没有重复,那么就不更新什么!
时间复杂度:O(nlogn)
空间复杂度:O(n)
sort()中涉及到一个快排的问题!

class Solution {
public:int result=0;static bool cmp(vector<int>& a,vector<int>& b){return a[0]<b[0];}int eraseOverlapIntervals(vector<vector<int>>& intervals) {sort(intervals.begin(),intervals.end());for(int i=1;i<intervals.size();i++){if(intervals[i][0]<intervals[i-1][1]){result++;intervals[i][1]=min(intervals[i-1][1],intervals[i][1]);}}return result;}
};

763.划分字母区间

思路:这道题没啥思路,看了答案,学习一下!先用一个数组记录一下(有点类似于哈希表的做法),记录一下每个字母在该数组中最远的位置,然后再去遍历,遍历到最远的地方,此处就是分割点!
时间复杂度:O(n)
空间复杂度:O(1)

class Solution {
public:vector<int> partitionLabels(string s) {int hash[27]={0};for(int i=0;i<s.size();i++){hash[s[i]-'a']=i;}vector<int> result;int left=0;int 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.合并区间

思路:最开始的时候思路也是先进行排序,然后判断两个区间是否重叠,将区间更新成更大的一个区间,但是对于怎么加入到result中,出现问题了,如果不先将第一个加入区间,利用第一个去判断,那么在后面会出现仅有一个的无法加入区间!(这里没想到)
时间复杂度:O(nlogn)
空间复杂度:O(logn)

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);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/689723.shtml

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

相关文章

燃气热水器水箱的气密性测试密封方案介绍—格雷希尔快速接头

家用燃气热水器的气密性检测是保障其安全性的重要环节之一&#xff0c;如热水器的水箱&#xff0c;它的周围缠绕着一圈铜管&#xff0c;这圈铜管和水箱之间有数量不等的焊接点&#xff0c;为了保证热水器的正常运行&#xff0c;必须要对它们进行气密性测试。   燃气热水器水箱…

文件且目录损坏无法读取怎么办?

文件及目录损坏无法读取是计算机使用过程中的常见故障&#xff0c;这可能是由于多种原因导致的&#xff0c;例如硬件故障、文件系统错误、病毒感染或不当操作等。本文将对这一问题进行深入分析&#xff0c;探讨其根本原因&#xff0c;并提供相应的解决方法&#xff0c;包括数据…

Gemini API模型详细信息一览表

Gemini API模型详细信息一览表&#xff0c;api模型&#xff1a;gemini-pro\gemini-pro-vision\embedding-001\aqa VariationAttributeDescriptionGemini ProModel last updatedFebruary 2024Model codemodels/gemini-proModel capabilities Input: textOutput: textGenerates …

ubuntu linux kernel内核操作

替换linux内核 实验步骤(在root权限下进行) 1.内核编译前的准备工作 2.下载内核 4. 编译新内核 5. 内核安装 6. 安装模块 7. 生成initrd.img文件 8. 切换到/boot/grub/目录下,自动查找新内核,并添加至grub引导 9. 重启Ubantu,在previous version中选择启动新编译的内核 …

Collectors.toMap使用记录

最近看到一行比较有趣的代码&#xff0c;他的功能就是将List转换为Map。我觉得挺有意思的&#xff0c;先前没遇到过&#xff0c;于是打算写篇文章记录一下。 public enum CodeEnum {USER("user"),AGE("age"),INTEREST("interest"),;private Str…

揭秘:一行代码搞定.Net API高并发的烦恼

高并发下的接口请求重复提交问题 在.Net开发中&#xff0c;我们经常遇到用户疯狂点击同一按钮&#xff0c;或者服务响应慢时重复发送请求&#xff0c;导致数据重复添加或混乱。这不仅浪费资源&#xff0c;更会得到错误的业务结果。如何高效解决这一普遍问题呢&#xff1f; 常规…

vscode 命令无法执行

以管理员启动powershell 输入set-ExecutionPolicy RemoteSigned yarn : 无法加载文件 D:\node\node_global\yarn.ps1。未对文件 D:\node\node_global\yarn.ps1 进行数字签名。无法在当前系统上运行该脚本。有关运行脚本和设置执行策略的详细信息&#xff0c;请参阅 https:/go…

2024年华为OD机试真题-计算三叉搜索树的高度-Java-OD统一考试(C卷)

题目描述: 定义构造三叉搜索树规则如下: 每个节点都存有一个数,当插入一个新的数时,从根节点向下寻找,直到找到一个合适的空节点插入。 查找的规则是: 1. 如果数小于节点的数减去500,则将数插入节点的左子树 2. 如果数大于节点的数加上500,则将…

影响效果图渲染的因素有哪些?渲染100邀请码1a12

效果图对很多行业是刚需&#xff0c;特别是视觉行业&#xff0c;一张好的效果图非常重要&#xff0c;影响效果图渲染的因素有很多&#xff0c;它们是哪些呢&#xff1f;一起来看看吧。 1、渲染引擎 渲染引擎对效果图的渲染至关重要&#xff0c;目前市面上有很多渲染引擎&#x…

阅读笔记(SOFT COMPUTING 2018)Seam elimination based on Curvelet for image stitching

参考文献&#xff1a; Wang Z, Yang Z. Seam elimination based on Curvelet for image stitching[J]. Soft Computing, 2018: 1-16. 注&#xff1a;SOFT COMPUTING 大类学科小类学科Top期刊综述期刊工程技术 3区 COMPUTER SCIENCE, ARTIFICIAL INTELLIGENCE 计算机&#xf…

6.1.0 MPLS LDP动态分配

手动写静态MPLS的转发路径&#xff0c;不仅不方便管理&#xff0c;同时配置量也非常多&#xff0c;每台设备都需要去做配置。为了方便管理且去除繁琐的配置&#xff0c;就需要使用到LDP动态标签分发协议了。 标签分发协议LDP&#xff08;Label Distribution Protocol&#xff…

供应STM32F103C8T6原装芯片

长期供应各品牌芯片&#xff1a; STM32F103C8T6 AMS1117-3V3 STM32F407VGT6 BSC039N06NS ICE2QR2280G-1 IPA65R310CFD IPP60R120P7 BSC010N04LS BSC011N03LS BSC027N04LS BSC042NE7NS3 BSC050N10NS5 BSC0911ND BSC109N10NS3 BSC320N20NS3 BSZ014NE2…

迈向AI时代:掌握Python编程与ChatGPT的强强联手

文章目录 一、ChatGPT与Python编程的结合二、利用ChatGPT学习Python编程的优势三、如何使用ChatGPT学习Python编程四、学习技巧与建议《码上行动&#xff1a;用ChatGPT学会Python编程》特色内容简介作者简介目录获取方式 随着人工智能技术的飞速发展&#xff0c;编程已经成为了…

【漏洞复现-通达OA】通达OA report_bi存在前台SQL注入漏洞

一、漏洞简介 通达OA(Office Anywhere网络智能办公系统)是由北京通达信科科技有限公司自主研发的协同办公自动化软件,是与中国企业管理实践相结合形成的综合管理办公平台。通达OA为各行业不同规模的众多用户提供信息化管理能力,包括流程审批、行政办公、日常事务、数据统计…

代码随想录算法训练营day24 | 77. 组合

今天开始回溯 回溯的模板。for循环是横向遍历&#xff0c;backtracking为纵向遍历。 回溯法解决的问题都可以抽象为树形结构&#xff0c;树的宽度为集合的大小&#xff0c;树的深度为递归的深度 void backtracking(参数) {if (终止条件) {存放结果;return;}for (选择&#x…

Unity3D Shader 素描风格渲染管线实现详解

前言 在游戏开发中&#xff0c;渲染效果是非常重要的一部分&#xff0c;它可以直接影响游戏的视觉效果和玩家的体验。而素描风格的渲染效果是一种非常独特和有趣的风格&#xff0c;可以为游戏增添一种艺术氛围。在Unity3D中&#xff0c;可以通过编写Shader来实现素描风格的渲染…

java面试

一、java基础篇 1.接口和抽象类的区别 相似点&#xff1a; &#xff08;1&#xff09;接口和抽象类都不能被实例化 &#xff08;2&#xff09;实现接口或继承抽象类的普通子类都必须实现这些抽象方法 不同点&#xff1a; &#xff08;1&#xff09;抽象类可以包含普通方法…

供应STM32F407VGT6芯片

长期供应各品牌芯片&#xff1a; STM32F407VGT6 ADM809LAKSZ-REEL7 MC78M05BDTRKG TOP271EG FDD16AN08A0 LM317MDT-TR ES1C DS90UB947TRGCRQ1 KIA75S393F-RTK MC96F8316SM FNB80560T3 S29AL008J55BFIR22 SS8050D-BU STM32F405RGT6TR IRFS3607TRLPBF MC79M05CDTR…

YOLOv8 | 代码逐行解析(二) | 从yaml文件到模型定义(代码逐行注释,小白必看)

👑欢迎大家订阅我的专栏一起学习YOLO👑 一、本文介绍 本文给大家带来的是YOLOv8项目的解读,之前给大家分析了YOLOv8的项目文件分析,这一篇文章给大家带来的是模型训练从我们的yaml文件定义到模型的定义部分的讲解,我们一般只知道如何去训练模型,和配置yaml文件,但是…

网络安全之信息收集<五>

目录 一.信息收集简介1.什么是信息收集2.信息收集的意义3.信息收集的分类(1)主动信息收集(2)被动信息收集 4.收集的具体信息(1)服务器信息(2)网站信息(3)域名信息(4)管理员信息 二.域名信息收集1.域名介绍2.域名分类3.Whois(1)Whois查询(2)Whois反查 4.子域名收集 一.信息收集简…