代码随想录算法训练营第31天—贪心算法05 | ● 435. 无重叠区间 ● *763.划分字母区间 ● *56. 合并区间

435. 无重叠区间

https://programmercarl.com/0435.%E6%97%A0%E9%87%8D%E5%8F%A0%E5%8C%BA%E9%97%B4.html

  • 考点
    • 贪心算法
    • 重叠区间
  • 我的思路
    • 先按照区间左坐标进行排序,方便后续处理
    • 进行for循环,循环范围是0到倒数第二个元素
    • 如果当前区间和下一区间重叠,结果计数加1,同时令下一区间的右坐标等于两个区间右坐标中的较小者,这里体现出了贪心的思路,因为取较小者即令区间尽可能小,也就降低了其与其它区间重叠的可能
    • 计数完毕后返回即可
  • 视频讲解关键点总结
    • 和我的思路类似
  • 我的思路的问题
  • 代码书写问题
  • 可执行代码
class Solution:def eraseOverlapIntervals(self, intervals: List[List[int]]) -> int:intervals.sort(key=lambda x: x[0])result = 0for i in range(len(intervals) - 1):if intervals[i + 1][0] < intervals[i][1]:result += 1intervals[i + 1][1] = min(intervals[i][1], intervals[i + 1][1])return result

*763.划分字母区间

https://programmercarl.com/0763.%E5%88%92%E5%88%86%E5%AD%97%E6%AF%8D%E5%8C%BA%E9%97%B4.html

  • 考点
    • 本题不是贪心,但思路近似于重叠区间,因此放到这里
    • 如何记录字母最后出现的位置
    • 有了字母最后位置,如何让整个区间的字母均满足要求
  • 我的思路
    • 无思路
  • 视频讲解关键点总结
    • 本题两个关键点写在了考点里
    • 一,先遍历一遍字符串,记录每个字符出现的最后位置的索引
    • 二,在循环遍历字符串的过程中,用一个变量记录遍历过的字符所对应的索引最大值,当当前索引和最大值吻合时,记录一次结果
  • 我的思路的问题
    • 无思路
  • 代码书写问题
  • 可执行代码
class Solution:def partitionLabels(self, s: str) -> List[int]:last_position = [0] * 26for i in range(len(s)):last_position[ord(s[i]) - ord('a')] = iresult = []start_index = 0end_index = 0for i in range(len(s)):end_index = max(end_index, last_position[ord(s[i]) - ord('a')])if i == end_index:result.append(i - start_index + 1)start_index = end_index + 1end_index = 0return result

*56. 合并区间

https://programmercarl.com/0056.%E5%90%88%E5%B9%B6%E5%8C%BA%E9%97%B4.html

  • 考点
    • 贪心算法
    • 重叠区间
  • 我的思路
    • 如果区间有重叠,将区间合并,知道当前区间和下一区间不重叠,将当前区间加入结果
  • 视频讲解关键点总结
    • 先将第一个区间加入结果列表中
    • 之后判断原列表的当前区间与结果列表的最后一个区间是否重叠,如果重叠,更新结果列表的最后一个区间
    • 如果不重叠,直接把当前区间加入结果列表
  • 我的思路的问题
    • 会遗漏最后一个区间
  • 代码书写问题
  • 可执行代码
class Solution:def merge(self, intervals: List[List[int]]) -> List[List[int]]:intervals.sort(key=lambda x: x[0])result = [intervals[0]]for i in range(1, len(intervals)):if result[-1][1] >= intervals[i][0]:result[-1][0] = min(intervals[i][0], result[-1][0])result[-1][1] = max(intervals[i][1], result[-1][1])else:result.append(intervals[i])return result

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

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

相关文章

在Linux以命令行方式(静默方式/非图形化方式)安装MATLAB(正版)

1.根据教程&#xff0c;下载windows版本matlab&#xff0c;打开图形化界面&#xff0c;选择linux版本的只下载不安装 2.获取安装文件夹 3.获取许可证 4.安装 &#xff08;1&#xff09;跳过引用文章的2.2章节 &#xff08;2&#xff09;本文的安装文件夹代替引用文章的解压IS…

Java进阶(锁)——锁的升级,synchronized与lock锁区别

目录 引出Java中锁升级synchronized与lock锁区别 缓存三兄弟&#xff1a;缓存击穿、穿透、雪崩缓存击穿缓存穿透缓存雪崩 总结 引出 Java进阶&#xff08;锁&#xff09;——锁的升级&#xff0c;synchronized与lock锁区别 Java中锁升级 看一段代码&#xff1a; public class…

Fastwhisper + Pyannote 实现 ASR + 说话者识别

文章目录 前言一、faster-whisper简单介绍二、pyannote.audio介绍三、faster-whisper pyannote.audio 实现语者识别四、多说几句 前言 最近在研究ASR相关的业务&#xff0c;也是调研了不少模型&#xff0c;踩了不少坑&#xff0c;ASR这块&#xff0c;目前中文普通话效果最好的…

Scrapy与分布式开发(1.1):课程导学

Scrapy与分布式开发&#xff1a;从入门到精通&#xff0c;打造高效爬虫系统 课程大纲 在这个专栏中&#xff0c;我们将一起探索Scrapy框架的魅力&#xff0c;以及如何通过Scrapy-Redis实现分布式爬虫的开发。在本课程导学中&#xff0c;我们将为您简要介绍课程的学习目标、内容…

Verilog Coding Styles For Improved Simulation Efficiency论文学习记录

原文基于Verilog-XL仿真器&#xff0c;测试了以下几种方式对仿真效率的影响。 1. 使用 Case 语句而不是 if / else if 语句 八选一多路选择器 case 实现效率比 if / else if 提升 6% 。 2. 如果可以尽量不使用 begin end 语句 使用 begin end 的 ff 触发器比不使用 begin end …

初学者学习51还是STM32

初学者学习51还是STM32 在嵌入式系统领域&#xff0c;51和STM32是两种常见的单片机架构。对于初学者来说&#xff0c;选择学习哪种架构可能会成为一个难题。本文将对初学者学习51和STM32进行比较&#xff0c;以帮助读者做出明智的选择。 1. 51架构 51架构是指Intel 8051系列…

深度相机xyz点云文件三维坐标和jpg图像文件二维坐标的相互变换函数

深度相机同时拍摄xyz点云文件和jpg图像文件。xyz文件里面包含三维坐标[x,y,z]和jpg图像文件包含二维坐标[x&#xff0c;y],但是不能直接进行变换&#xff0c;需要一定的步骤来推演。 下面函数是通过box二维框[xmin, ymin, xmax, ymax, _, _ ]去截取xyz文件中对应box里面的点云…

MyCAT学习——在openEuler22.03中安装MyCAT2(网盘下载版)

准备工作 因为MyCAT 2基于JDK 1.8开发。也需要在虚拟机中安装JDK&#xff08;JDK官网就能下载&#xff0c;我这提供一个捷径&#xff09; jdk-8u401-linux-x64.rpmhttps://pan.baidu.com/s/1ywcDsxYOmfZONpmH9oDjfw?pwdrhel下载对应的tar安装包,以及对应的jar包 安装程序包…

九州金榜|孩子厌学要怎么办?

孩子从小学到初中再到高中&#xff0c;孩子出现厌学情绪很正常&#xff0c;但是孩子出现厌学情绪后&#xff0c;就必然会影响到孩子学习成绩&#xff0c;孩子产生厌学情绪的原因有哪些呢&#xff1f;只有找准孩子厌学原因才能去帮助孩子怎样去克服孩子厌学情绪&#xff0c;下面…

ajax请求servlet成功但接收不到返回数据问题

ajax请求servlet成功但接收不到返回数据问题 javaweb初学者&#xff0c;最近老师布置的课设&#xff0c;所有功能都完成了&#xff0c;唯独ajax与servlet交互出现问题&#xff0c;无论怎么调试都收不到数据 查询两天无果&#xff0c;刚才无意间看到 Crabime前辈的文章才恍然大…

深入解析YOLO:实时目标检测技术的革命者

深入解析YOLO&#xff1a;实时目标检测技术的革命者 目标检测作为计算机视觉领域的一个核心任务&#xff0c;一直以来都是研究的热点。而YOLO&#xff08;You Only Look Once&#xff09;技术作为其中的杰出代表&#xff0c;以其独特的处理方式和卓越的性能&#xff0c;成为了…

day34贪心算法 part03

1005. K 次取反后最大化的数组和 简单 给你一个整数数组 nums 和一个整数 k &#xff0c;按以下方法修改该数组&#xff1a; 选择某个下标 i 并将 nums[i] 替换为 -nums[i] 。 重复这个过程恰好 k 次。可以多次选择同一个下标 i 。 以这种方式修改数组后&#xff0c;返回数…

力扣栈队列篇

以下思路来自代码随想录以及官方题解。 文章目录 232.用栈实现队列225.用队列实现栈20.有效的括号1047.删除字符串中所有相邻重复项150.逆波兰表达式求值347.前K个高频元素 232.用栈实现队列 请你仅使用两个栈实现先入先出队列。队列应当支持一般队列支持的所有操作&#xff…

OSError: [WinError 1455] 页面文件太小,无法完成操作。

[问题描述]&#xff1a;OSError: [WinError 1455] 页面文件太小&#xff0c;无法完成操作。 原因1&#xff1a;线程数太大 方法&#xff1a;改小线程&#xff08;workers&#xff09;数。 原因2&#xff1a;虚拟内存太小或为0&#xff0c;调大虚拟内存。 方法&#xff1a;右键…

mysql索引过长Specialed key was too long的解决方法

在创建要给表的时候遇到一个有意思的问题&#xff0c;提示Specified key was too long; max key length is 767 bytes&#xff0c;从描述上来看&#xff0c;是Key太长&#xff0c;超过了指定的 767字节限制。通常出现在尝试创建一个过长的唯一键&#xff08;UNIQUE KEY&#xf…

Vue.js 实用技巧:深入理解 Vue.mixin

&#x1f90d; 前端开发工程师、技术日更博主、已过CET6 &#x1f368; 阿珊和她的猫_CSDN博客专家、23年度博客之星前端领域TOP1 &#x1f560; 牛客高级专题作者、打造专栏《前端面试必备》 、《2024面试高频手撕题》 &#x1f35a; 蓝桥云课签约作者、上架课程《Vue.js 和 E…

uniapp真机运行的时候显示同步资源失败,未得到同步资源的授权,请停止运行后重新运行,并注意手机上的授权提示

1、问题 在添加清单文件之前&#xff0c;项目运行都是好好的&#xff0c;添加了清单项目以后&#xff0c;基座一打就报这个错&#xff0c;并且手机在安装基座的时候会提示解析包时失败&#xff0c; 2、解决方案 打开我的清单文件&#xff0c;我发现我和官网写的清单文件不一…

华为OD机试“HJ2计算某字符出现次数”不区分大小写Java编程解答

描述 写出一个程序&#xff0c;接受一个由字母、数字和空格组成的字符串&#xff0c;和一个字符&#xff0c;然后输出输入字符串中该字符的出现次数。&#xff08;不区分大小写字母&#xff09; 数据范围&#xff1a; 1≤n≤1000 输入描述&#xff1a; 第一行输入一个由字…

【Linux进程间通信】共享内存

【Linux进程间通信】共享内存 目录 【Linux进程间通信】共享内存system V共享内存共享内存示意图共享内存的数据结构共享内存函数将共享内存挂接到对应的进程将共享内存取消挂接释放共享内存 共享内存的特性共享内存扩展共享内存配合管道进行使用 作者&#xff1a;爱写代码的刚…

用docker部署后端项目

一、搭建局域网 1.1、介绍前后端项目搭建 需要4台服务器&#xff0c;在同一个局域网中 1.2、操作 # 搭建net-ry局域网&#xff0c;用于部署若依项目 net-ry&#xff1a;名字 docker network create net-ry --subnet172.68.0.0/16 --gateway172.68.0.1#查看 docker network ls…