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

news2024/11/19 4:32:32

一、LeetCode435. 无重叠区间

        1:题目描述(435. 无重叠区间)

        给定一个区间的集合 intervals ,其中 intervals[i] = [starti, endi] 。返回 需要移除区间的最小数量,使剩余区间互不重叠 

        2:解题思路

class Solution:
    def eraseOverlapIntervals(self, intervals: List[List[int]]) -> int:
        if not intervals: return 0
        # 对intervals进行排序,按右边界进行排序
        intervals.sort(key=lambda x: x[1])      
        count = 1      # 记录非交叉区间的个数,初始为1
        end = intervals[0][1]    # 记录区间的分割点
        for i in range(1, len(intervals)):
            if intervals[i][0] >= end:
                # 若当前元素的左边界值 大于等于 区间分割点,说明区间不相交
                count += 1       # 非交叉区间的个数+1
                # 更新区间的分割点,为当前元素的右边界值
                end = intervals[i][1]
        # 数组长度减去非交叉区间的个数,就是交叉区间的个数,及需要移除的最小区间
        return len(intervals)-count

二、LeetCode763. 划分字母区间

        1:题目描述(763. 划分字母区间)

        字符串 S 由小写字母组成。我们要把这个字符串划分为尽可能多的片段,同一字母最多出现在一个片段中。返回一个表示每个字符串片段的长度的列表。

        2:解题思路

class Solution:
    def partitionLabels(self, s: str) -> List[int]:
        # 先统计出每个字母在字符串中出现的最远位置
        hash_list = [0] * 26        # 初始化
        for i in range(len(s)):
            # 遍历字符串,记录元素出现的最远位置的下标
            hash_list[ord(s[i]) - ord("a")] = i
        result = []
        right = 0      # 切割字符串的右边界
        left = 0       # 切割字符串的左边界
        for i in range(len(s)):
            # 在right和当前元素的最远距离中取最大值
            right = max(right, hash_list[ord(s[i])-ord("a")])
            if i == right:
                # 当下标等于right,就可以切割字符串了
                # result.append(len(s[left:right+1]))
                result.append(right-left+1)
                # 下一个切割的左边界为i+1
                left = i + 1
        return result

三、LeetCode56. 合并区间

        1:题目描述(56. 合并区间)

        以数组 intervals 表示若干个区间的集合,其中单个区间为 intervals[i] = [starti, endi] 。请你合并所有重叠的区间,并返回 一个不重叠的区间数组,该数组需恰好覆盖输入中的所有区间 。

        2:解题思路

class Solution:
    def merge(self, intervals: List[List[int]]) -> List[List[int]]:
        res = []
        if not intervals: return res
        intervals.sort(key=lambda x: x[0])
        res.append(intervals[0])
        for i in range(1, len(intervals)):
            last = res[-1]
            if intervals[i][0] <= last[1]:
                res[-1] = [last[0], max(last[1], intervals[i][1])] 
            else:
                res.append(intervals[i])
        return res

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

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

相关文章

MySQL面试问题汇总(2022)

一、MySQL架构 锁 什么是锁&#xff1f; 当多个连接并发地存取MySQL数据时&#xff0c;在数据库中就会产生多个事务同时存取同一数据的情况。若对并发操作不加控制就可能会读取和存储不正确的数据&#xff0c;破坏数据库的一致性。 加锁是实现数据库并发控制的一个非常重要的…

BFV同态加密方案初步学习

BFV是把Bra12的LWE版本推到了RLWE版本&#xff0c;Bra12也可以叫做BFV。 经典的RLWE的公钥加密算法回顾 对比以前的Regev的LWE公钥加密方案&#xff0c;其实几乎只是把明文空间换了&#xff0c;也就是在最大比特编码的时候把2换成t&#xff0c;即&#xff0c;Δ⌊q/t⌋\Delta…

web网页设计期末课程大作业——香格里拉旅游网页设计 5页 HTML+CSS+JavaScript

家乡旅游景点网页作业制作 网页代码运用了DIV盒子的使用方法&#xff0c;如盒子的嵌套、浮动、margin、border、background等属性的使用&#xff0c;外部大盒子设定居中&#xff0c;内部左中右布局&#xff0c;下方横向浮动排列&#xff0c;大学学习的前端知识点和布局方式都有…

一起来看看AMD最新显卡驱动22.11.1!

AMD最新推出了显卡驱动22.11.1&#xff0c;可以支持新上线的使命召唤&#xff1a;战区2&#xff0c;并且还修复了一系列的问题&#xff0c;AMD忠实用户们期待了嘛~ 更新内容 支持 使命召唤&#xff1a;战区 2.0 漫威蜘蛛侠&#xff1a;迈尔斯莫拉莱斯™ 固定问题 Radeon™ RX 6…

【mycat】mycat水平分表

mycat完成水平拆分 简介 相对于垂直拆分&#xff0c;水平拆分不是将表做分类&#xff0c;而是按照某个字段的某种规则来分散到多个库之中&#xff0c;每个表中包含一部分数据。简单来说&#xff0c;我们可以将数据的水平切分理解为是按照数据行的切分&#xff0c;就是将表中的…

【Try Hack Me】内网专项---Wreath

THM 学习笔记 【Try Hack Me】内网专项—Wreath &#x1f525;系列专栏&#xff1a;Try Hack Me &#x1f389;欢迎关注&#x1f50e;点赞&#x1f44d;收藏⭐️留言&#x1f4dd; &#x1f4c6;首发时间&#xff1a;&#x1f334;2022年11月17日&#x1f334; &#x1f36d;作…

编程基础都要懂的计算机组成

学习目标: 1. 能够说出计算机有那两部分组成 2. 能够说出操作系统的作用 1.1计算机组成 计算机是可以进行数值计算和逻辑运算, 并且具有存储功能的电子机器. 计算机由硬系统件和软件系统组成. 1.1.1 硬件系统 主要分为主机和外设两部分, 是指那些构成计算机系统的物理实体,…

123456

hostname web1 bash 113.219.215.44 ctyun/Ctyun2022 cd /data/html/ tar -cvf /home/ctyun/html_zy.tar ./ mysqldump -uctyun -p --skip-lock-tables -R ultrax>ultrax_zhouyue.sql cd /etc/httpd tar -cvf /home/ctyun/httpd_zhouyue.tar ./ 关机改云主机私有网卡…

APP逆向案例之(一)过 app 更新提示

案例&#xff1a;某APP打开时提示更新 思路&#xff1a;想这是查壳看看有没有加壳&#xff0c;没有就去反编译按照提示搜索下&#xff0c;结果却是没有加壳反编译了下搜索&#xff0c;搜索不到&#xff0c;后来想到是不是网络传过来的&#xff0c;那这样是不是就要先获取本身AP…

Spring(十四)- Spring注解原理解析

文章目录一、Spring注解原理解析1. 使用xml配置扫描组件的原理解析2. 使用配置类扫描组件的原理解析一、Spring注解原理解析 1. 使用xml配置扫描组件的原理解析 使用Component等注解配置完毕后&#xff0c;要配置组件扫描才能使注解生效 ⚫ xml配置组件扫描&#xff1a; <c…

springboot RestTemplate优化 http 池化

http通信之三次握手 为了对每次发送的数据量进行跟踪与协商&#xff0c;确保数据段的发送和接收同步&#xff0c;根据所接收到的数据量而确认数据发送、接收完毕后何时撤消联系&#xff0c;并建立虚连接。 TCP在发送新的数据之前&#xff0c;以特定的顺序将数据包的序号&#…

【LeetCode 力扣】3.无重复字符的最长子串 Java实现 滑动窗口

题目链接&#xff1a;3.无重复字符的最长子串 1 原题描述&#xff1a; 2 解题思路 初看此题&#xff0c;其实并不难理解&#xff0c;我们一共有两个指针&#xff0c;一个时我们子串的头 start &#xff0c;一个是我们子串的尾 end。我们的尾 end 依次加一&#xff0c;然后判…

dpdk 多线程 gdb + master

1、 main线程没有调用pthread_join 一、初始化 1、rte_eal_cpu_init()函数中&#xff0c;通过读取/sys/devices/system/cpu/cpuX/下的相关信息&#xff0c;确定当前系统有哪些CPU核&#xff0c;已经每个核属于哪个CPU Socket。 2、eal_parse_args()函数&#xff0c;解析-c参数…

力扣:递增子序列java

力扣&#xff1a;递增子序列java 流程: 设置一个结果集和路径path 本题不设置used而是再当前层设置一个map 递归三部曲&#xff1a; 参数和返回值&#xff1a;参数为输入数组nums&#xff0c;开始下标startindex&#xff0c;返回值为空 对path>1时的path输入结果集//放到这…

OTP语音芯片SOP8的前世今生_如九齐_硕呈_钰绅等以及国产方案KT148A

目录 一、语音芯片的形态简介 语音芯片ic的其中一个品类&#xff0c;就是SOP8封装的OTP语音芯片&#xff0c;非常的经典和常用。源头的供应商基本都是台系的原厂&#xff0c;比如&#xff1a;九齐、硕呈、佑华等等&#xff0c;其中佑华就算是鼻祖了&#xff0c;早期的4位机也是…

JSP脚本

在 JSP 中&#xff0c;可以使用 JSP 脚本写入 Java 代码。 JSP 脚本可以包含任意数量的 Java 语句&#xff0c;变量、方法和表达式。JSP 脚本会把包含的内容插入到 Servlet 的 service() 方法中。 JSP 脚本语法如下&#xff1a; <% Java语句 %> <jsp:scriptlet>J…

【kubernetes篇】使用Harbor仓库管理kubernetes镜像

引言 Docker容器应用的开发和运行离不开可靠的镜像管理&#xff0c;在企业级的Docker Registry管理项目中&#xff0c;一般使用Harbor&#xff0c;它包括权限管理(RBAC)、LDAP、日志审核、管理界面、自我注册、镜像复制和中文支持等功能。 今天就将Harbor仓库的安装和使用做一…

【手把手】教你玩转SpringCloud Alibaba之GateWay

1、什么是GateWay 在微服务架构中&#xff0c;一个系统会被拆分为很多个微服务。那么作为客户端要如何去调用这么多的微服务呢&#xff1f;如果没有网关的存在&#xff0c;只能在客户端记录每个微服务的地址&#xff0c;然后分别去调用。这样的话会产生很多问题: - 客户端多次…

2022年亚太地区大学生数学建模竞赛/2022年亚太杯思路

解题方向&#xff1a; 回复&#xff1a;亚太 2022年第十二届亚太地区大学生数学建模竞赛(以下简称“竞赛”)是北京图象图形学学会主办的亚太地区大学生学科类竞赛&#xff0c;竞赛由亚太地区大学生数学建模竞赛组委会负责组织&#xff0c;欢迎各高等院校按照竞赛章程及有关规定…

【EC200U】何为QuecPython以及QPYcom基础操作

EC200U 何为QuecPython以及QPYcom基础操作QuecPython介绍Quec是啥MicroPythonQuecPython与MicroPython的关系QuecPython技术特性IDE(QPYcom)基础操作创建项目导入脚本方法1方法2运行脚本QuecPython是个啥&#xff0c;QPYcom怎么用? QuecPython介绍 Quec是啥 Quec 取自 Quect…