代码随想录算法训练营第36期DAY38

DAY38

435无重叠区间

昨晚很快就想出来了,今天相当于二刷。

  1. class Solution {
  2. public:
  3.     static bool mycmp(vector<int>&a,vector<int>&b){
  4.         return a[1]<b[1];
  5.     }
  6.     int eraseOverlapIntervals(vector<vector<int>>& intervals) {
  7.         int res=0;
  8.         sort(intervals.begin(),intervals.end(),mycmp);
  9.         int end=intervals[0][1];
  10.         for(int i=1;i<intervals.size();i++){
  11.             if(intervals[i][0]<end){
  12.                 res++;
  13.                 continue;
  14.             }
  15.             end=intervals[i][1];
  16.         }
  17.         return res;
  18.     }
  19. };

763划分字母区间

  1. COZE的解法:记录每个元素的最终位置,如果当前遍历到了元素的最终位置,就将长度加入到结果集中。写得很巧妙,不容易想到:很多变量的使用技巧、算法设计。之后吸收其他优质题解,先自己按着算法思路写一遍:

动手模拟一遍,就掌握该算法了:

  1. class Solution {
  2. public:
  3.     vector<intpartitionLabels(string s) {
  4.         vector<int> res;
  5.         vector<intlast(26,0);
  6.         for(int i=0;i<s.size();i++){
  7.             last[s[i]-'a']=max(last[s[i]-'a'],i);
  8.         }
  9.         int j=0,anthor=0;
  10.         for(int i=0;i<s.size();i++){
  11.             j=max(j,last[s[i]-'a']);
  12.             if(i==j){
  13.                 res.push_back(j-anthor+1);
  14.                 anthor=i+1;
  15.             }
  16.         }
  17.         return res;
  18.     }
  19. };

  1. 力扣优质题解,3份,加深记忆

想切割,要有首尾两个指针,确定了结尾指针,就能确定下一个切割的开始指针。
遍历字符串,如果已扫描部分的所有字符,都只出现在已扫描的范围内,即可做切割。

出自力扣博主:笨猪爆破组(https://leetcode.cn/u/xiao_ben_zhu/)

力扣数学描述:出自力扣官方题解:(https://leetcode.cn/u/leetcode-solution/)

  1. 代码随想录题解

需要额外学习:与区间操作类似的解法:

统计字符串中所有字符的起始和结束位置,记录这些区间,将区间按左边界从小到大排序,找到边界将区间划分成组,互不重叠。找到的边界就是答案。

过了,二刷一下:

  1. class Solution {
  2. public:
  3.     static bool mycmp(vector<int>&a,vector<int>&b){
  4.         return a[0]<b[0];
  5.     }
  6.     vector<vector<int>> CountHash(string s){
  7.         vector<vector<int>> hash(26,vector<int>(2,INT_MIN));
  8.         vector<vector<int>> hashfilter;
  9.         for(int i=0;i<s.size();i++){
  10.             if(hash[s[i]-'a'][0]==INT_MIN) hash[s[i]-'a'][0]=i;
  11.             hash[s[i]-'a'][1]=i;
  12.         }
  13.         for(int i=0;i<hash.size();i++){
  14.             if(hash[i][0]!=INT_MIN) hashfilter.push_back(hash[i]);
  15.         }
  16.         return hashfilter;
  17.     }
  18.     vector<intpartitionLabels(string s) {
  19.         vector<int> res;
  20.         vector<vector<int>> tmp=CountHash(s);
  21.         sort(tmp.begin(),tmp.end(),mycmp);
  22.         int st=0,ed=tmp[0][1];
  23.         for(int i=1;i<tmp.size();i++)
  24.         {
  25.             if(tmp[i][0]>ed){
  26.                 res.push_back(ed-st+1);
  27.                 st=tmp[i][0];
  28.             }
  29.             ed=max(ed,tmp[i][1]);
  30.         }
  31.         res.push_back(ed-st+1);
  32.         return res;
  33.     }
  34. };

56合并区间

模版题,昨天正好复习了ACWING区间合并模版:

  1. class Solution {
  2. public:
  3.     static bool mycmp(vector<int>&a,vector<int>&b){
  4.         return a[0]<b[0];
  5.     }
  6.     vector<vector<int>> merge(vector<vector<int>>& intervals) {
  7.         vector<vector<int>> res;
  8.         int st=INT_MIN,ed=INT_MIN;
  9.         sort(intervals.begin(),intervals.end(),mycmp);
  10.         for(int i=0;i<intervals.size();i++){
  11.             //不重叠
  12.             if(ed<intervals[i][0]){
  13.                 if(ed!=INT_MIN) res.push_back({st,ed});
  14.                 st=intervals[i][0],ed=intervals[i][1];
  15.             }
  16.             //重叠  
  17.             else{
  18.                 ed=max(intervals[i][1],ed);
  19.             }
  20.         }
  21.         res.push_back({st,ed});
  22.         return res;
  23.     }
  24. };

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

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

相关文章

如何部署一个基本符合ERC20的智能合约

运行genache-cli 运行以下命令genache-cli下载MetaMask浏览器拓展钱包 添加账户 导入账户 输入genache-cli生成其中的密钥 选择【显示测试网络】点击【添加网络】 添加自己本地的网络 选择该测试网络&#xff0c;账号里就会有100RETH 在remix里接通这个测试帐号 …

10.2.k8s的附加组件-Metrics-server组件与hpa资源pod水平伸缩

目录 一、概述 二、安装部署Metrics-Server组件 1.下载Metrics-Server资源清单 2.编辑Metrics-Server的资源清单 3.验证Metrics-Server是否成功安装 4.使用top命令测试是否管用 三、hpa资源实现pod水平伸缩&#xff08;自动扩缩容&#xff09; 1.编写deploy资源清单 2.…

Sap Hana 数据迁移同步优化(二)

简述 CloudCanal 近期对 Hana 源端链路做了新一轮优化&#xff0c;这篇文章简要做下分享。 本轮优化主要包含: 表级别 CDC 表表级别任务位点表级别触发器 单 CDC 表的问题 CloudCanal 在实现 Hana 源端增量同步时&#xff0c;最初采用的是单 CDC 表的模式。 即所有订阅表…

【C语言】深入理解指针(一)(上)

本篇文章将讲解&#xff1a; &#xff08;1&#xff09;内存和地址 &#xff08;2&#xff09;指针变量和细致 &#xff08;3&#xff09;指针变量类型的意义 一&#xff1a;内存和地址 &#xff08;1&#xff09;内存 在讲内存和地址之前&#xff0c;我们讲一个生活中的…

Three.js 研究:1、如何让物体动起来

1、制作模型动画 2、模型动画在代码中的调用 使用这个例子进行修改&#xff0c;使他能动作webgl_animation_skinning_morph.html 制作好的模型放到如下路径 /three.js-master/examples/models/gltf/无标题.gltf修改加载模型文件的地址 修改动画名称 运行 点击动画后&…

彩虹聚合二级域名DNS管理系统源码v1.3

聚合DNS管理系统可以实现在一个网站内管理多个平台的域名解析&#xff0c; 目前已支持的域名平台有&#xff1a;阿里云、腾讯云、华为云、西部数码、CloudFlare。 本系统支持多用户&#xff0c;每个用户可分配不同的域名解析权限&#xff1b;支持API接口&#xff0c; 支持获…

Oracle 证书的重要性

随着信息技术的飞速发展&#xff0c;数据库管理已成为企业运营中不可或缺的一部分。Oracle作为全球领先的数据库管理系统提供商&#xff0c;其Oracle Certified Professional&#xff08;OCP&#xff09;认证已成为数据库管理员和开发人员追求的专业认证之一。本文将深入探讨Or…

标准化软件实施方案(直接套用即可)

软件实施方案 二、 项目介绍 三、 项目实施 四、 项目实施计划 五、 人员培训 六、 项目验收 七、 售后服务 八、 项目保障措施 软件开发全套资料获取&#xff1a;&#xff08;本文末个人名片也可直接获取&#xff09;软件开发全套资料_数字中台建设指南-CSDN博客 软件产品&am…

接口响应断言

目录 接口断言介绍接口断言方式介绍响应状态码断言 课程目标 掌握什么是接口断言。了解接口断言的多种方式。掌握如何对响应状态码完成断言。 思考 这两段代码是完整的接口自动化测试代码吗&#xff1f; …省略… when().get(“https://httpbin.ceshiren.com/get?namead&…

【LeetCode算法】第58题:最后一个单词的长度

目录 一、题目描述 二、初次解答 三、官方解法 四、总结 一、题目描述 二、初次解答 1. 思路&#xff1a;双指针法。low指向单词头&#xff0c;high指向单词后的空格&#xff0c;则high-low就是每个单词的长度。算法步骤&#xff1a;①low从头往后查找第一个非空格的字符&…

Python 将文件夹中的图片信息导入到 Excel 的表格

引言 在数据处理和管理的日常任务中&#xff0c;经常需要将文件夹中的图片文件信息&#xff08;如文件名、路径、创建日期、大小、分辨率等&#xff09;整理成一个 Excel 表格。这篇博客将介绍如何使用 Python 中的 wxPython 模块创建一个 GUI 应用&#xff0c;用户可以通过这…

【Linux】用户级缓冲区

&#x1f466;个人主页&#xff1a;Weraphael ✍&#x1f3fb;作者简介&#xff1a;目前正在学习c和算法 ✈️专栏&#xff1a;Linux &#x1f40b; 希望大家多多支持&#xff0c;咱一起进步&#xff01;&#x1f601; 如果文章有啥瑕疵&#xff0c;希望大佬指点一二 如果文章对…

微服务项目收获和总结---第4天(文章审核和保存)

文章审核以及APP端保存文章 业务流程&#xff1a; App端保存接口&#xff1a; 数据库表详情 文章的基本信息表&#xff1a;id&#xff0c;标题&#xff0c;作者id&#xff0c;频道id...... 文章的权限/配置表&#xff1a;存储文章是否可以评论&#xff0c;是否上架&#xff…

开源实用!猫抓媒体嗅探浏览器插件

CatCatch&#xff1a;网络资源&#xff0c;一触即发 - 精选真开源&#xff0c;释放新价值。 概览 CatCatch是一个专为浏览器设计的资源嗅探扩展&#xff0c;旨在帮助用户轻松捕获和分析网页中的各种资源。无论是视频、音频还是其他类型的文件&#xff0c;猫爪都能提供直观的界…

在XP/Vista系统下使用Node.js的babel-cli命令行工具转码ES6语法的js文件,让IE8浏览器也能运行

在XP系统下IE浏览器最高只能装到IE8&#xff0c;在Vista系统下最高只能装到IE9。 2015年以后&#xff0c;JavaScript新增了很多语法&#xff0c;比如class、extends&#xff0c;还有let和const等等&#xff0c;这些语法都是XP下的终端浏览器IE8所不支持的。要想让使用了这些新式…

AI爆文写作:关注热点,提前埋伏好关键词,吃系统的热点推荐,吃搜索流量,让你的文章直接爆了!

做内容&#xff0c;要对热点敏感。 小米汽车的发布会时间&#xff0c;我们是不是提前就知道&#xff0c;发布会前&#xff0c;大家最关注的就是价格。 你看这个相关关键词搜索&#xff0c;10W太多了。 我看到有博主在发布会前&#xff0c;埋伏了一篇&#xff0c;公众号也有推…

读人工智能时代与人类未来笔记13_网络57

1. jun背控制 1.1. 威慑的目的是通过威胁发动盒站来防止盒站 1.2. jun背控制的目的是通过限制甚至废除57&#xff08;或57类别&#xff09;本身来防止盒站真 1.2.1. 与盒不扩散相配合&#xff0c;以一整套详尽的条约、技术保障措施、监管和其他控制机制为支撑&#xff0c;所…

B站pink老师CSS学习(二)

文章目录 一、emmet语法1.快速生成HTML结构语法 二、复合选择器1.什么是复合选择器2.后代选择器3.子选择器4.并集选择器5.伪类选择器6.链接伪类选择器7&#xff1a;focus伪类选择器8.总结 三、元素的显示模式1.什么是元素显示模式2.块元素3.行内元素4.行内块元素5.总结6.元素显…

08.1.jenkins安装方法

安装 配置官方下载源 #配置jenkins源 sudo wget -O /etc/yum.repos.d/jenkins.repo https://pkg.jenkins.io/redhat-stable/jenkins.repo sudo rpm --import https://pkg.jenkins.io/redhat-stable/jenkins.io.key下载jak、jenkins服务 #下载jdk11环境&#xff0c;并且配置yu…

C++ | Leetcode C++题解之第110题平衡二叉树

题目&#xff1a; 题解&#xff1a; class Solution { public:int height(TreeNode* root) {if (root NULL) {return 0;}int leftHeight height(root->left);int rightHeight height(root->right);if (leftHeight -1 || rightHeight -1 || abs(leftHeight - rightH…