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

news2024/9/30 19:31:18

文章目录

      • 重叠问题
      • 435. 无重叠区间
      • 763.划分字母区间:star:
      • 56. 合并区间

重叠问题

这几道题都是判断区间重叠,区别就是判断区间重叠后的逻辑

435. 无重叠区间

  • 链接:代码随想录

  • 解题思路:
    这道题和射气球的题几乎思路一样
    不断求出重叠的最小右区间,模拟重叠过程就可解题

public int eraseOverlapIntervals(int[][] intervals) {
    //按左边排序
    Arrays.sort(intervals, (a,b)->{
        return Integer.compare(a[0], b[0]);
    });

    int remove = 0;//该移除的区间
    int pre = intervals[0][1];//前一个判断的右区间
    for (int i = 1; i < intervals.length; i++) {
        //有重叠的情况
        if(pre > intervals[i][0]){
            remove++;
            //更新最新的右区间为
            //相交的时候去最小的右边,没被取的右边的区间即被删除
            pre = Math.min(pre, intervals[i][1]);
        }else{
            pre = intervals[i][1];//没有重叠的情况
        }
    }

    return remove;
}

763.划分字母区间⭐️

  • 链接:代码随想录

  • 解题思路:
    ①统计每一个字符最后出现的位置**(哈希结构存储)**
    ②从头遍历字符,并更新字符的最远出现下标,如果找到字符最远出现位置下标和当前下标相等了,则找到了分割点

    ​ 贪心可能体现在,找最远下标的情况
    ​ 用最远出现距离模拟了圈字符。
    ​ 如果遍历的 i == 最远下标,说明之前遍历过的元素都符合划分范围,即划分

  • 图像理解

    Snipaste_2023-04-19_17-06-11

public List<Integer> partitionLabels(String s) {
    int[] hash = new int[26];//hash[i] 为字符最远出现的地方的索引  用哈希结构维护(索引 -- 值)

    for (int i = 0; i < s.length(); i++) {
        hash[s.charAt(i) - 'a'] = i;
    }

    int left = 0;//每一次区间的起点位置
    int right = 0;//每一次划分区间的末尾位置

    List<Integer> res = new ArrayList<>();

    for (int i = 0; i < s.length(); i++) {
        right = Math.max(right, hash[s.charAt(i) - 'a']);//取最大边界

        //遍历到最大边界
        if(i == right){
            res.add(right - left + 1);

            left = right + 1;//更新起点位置
        }
    }

    return res;
}

56. 合并区间

  • 题目链接:代码随想录

重叠问题

  • 解题思路:
    此题判断重叠区间还是原先的思路,先排序,再根据右边界和左边界进行判断
    关键点在于判定重叠区间后,判断进行加入结果集的操作

  • 图像理解:

    Snipaste_2023-04-19_17-48-39

public int[][] merge(int[][] intervals) {

    List<int[]> res = new LinkedList<>();//结果集

    //1.排序
    Arrays.sort(intervals,(a,b) -> {
        return Integer.compare(a[0], b[0]);
    });

    //2.定义区间,来求最大重叠区域,并处理最大重叠区域,添加进一个新的结果集,耗空间
    int start = intervals[0][0];//起始位置
    int right = intervals[0][1];//右区间
    //3.进行遍历

    for (int i = 1; i < intervals.length; i++) {

        //重叠区域,更新最大右区间,先不加入结果集
        if(right >= intervals[i][0]){
            right = Math.max(right, intervals[i][1]);
        }else{//非重叠区域,将非重叠的第一个区域加入结果集,符合要求

            res.add(new int[]{start,right});//前一个位置

            //更新当前区间
            start = intervals[i][0];
            right = intervals[i][1];
        }
    }

    //最后一定要加入最后一个待加入区间
    res.add(new int[]{start,right});

    return res.toArray(new int[res.size()][]);
}

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

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

相关文章

【Spring篇】Spring相关概念

&#x1f353;系列专栏:Spring系列 &#x1f349;个人主页:个人主页 目录 一、介绍 &#x1f34a;1.为什么要学? &#x1f34d;2.学什么? &#x1f353;3.怎么学? 二、Spring相关概念 &#x1f352;1.Spring家族 &#x1f345;2.了解Spring发展史 &#x1f350;3.Spr…

Centos7 系列:磁盘挂载和磁盘扩容(新加硬盘方式)

磁盘挂载和磁盘扩容 一、系统环境二、磁盘挂载到新目录&#xff08;磁盘挂载&#xff09;2.1 查找新硬盘2.2 创建挂载目录2.3 创建新分区2.4 创建新物理卷2.5 创建新卷组2.6 创建新逻辑卷2.7 挂载到空目录 三、挂载到已有目录&#xff08;磁盘扩容&#xff09;3.1 查找新硬盘3.…

【Linux】冯诺依曼体系结构与进程的基础知识点

目录 1.冯诺依曼体系结构硬件[2~5]2.为什么要有内存&#xff1f;3.为什么不用CPU中的寄存器做存储单元&#xff1f;4.为什么我们的程序必须先被加载到内存中&#xff1f;5.在硬件层面数据流是如何流向的&#xff1f; 软件[6~10]6.操作系统Operator System7.操作系统的作用8.操作…

能源管理系统在电子厂房中的应用

摘要&#xff1a;以能耗管理系统在工业厂房的应用为例&#xff0c;介绍了系统架构及功能。重点分析能耗管理系统在工业厂房实施过程中遇到的难点&#xff0c;并对系统采集的数据进行分析&#xff0c;提出了相应的节能措施&#xff0c;帮助该业厂房达到节约能耗和运行费用的目的…

tomcat部署应用页面乱码问题解决方案

参考&#xff1a;(129条消息) java jvm字符集 设置_windows/tomcat 修改java虚拟机JVM以utf-8字符集加载class文件的两种方式..._Lemaden的博客-CSDN博客 1、应用部署tomcat启动之后&#xff0c;页面显示乱码&#xff0c;解决方案 设置环境变量&#xff1a; 我的电脑 -> …

转行大数据未来发展怎么样?可行么

近年来越来越多的人选择大数据行业&#xff0c;大数据行业前景不错薪资待遇好&#xff0c;各大名企对于大数据人才需求不断上涨。 大数据从业领域很宽广&#xff0c;不管是科技领域还是食品产业&#xff0c;零售业等都是需要大数据人才进行大数据的处理&#xff0c;以提供更好…

智慧管廊监控与报警管控一体化系统解决方案

摘要&#xff1a;智慧管廊监控与报警管控是一项综合性质较高的管控操作系统。在各项系统结构之间因为技术管理体系之间的差异&#xff0c;所评价的标准也有着不同的区分&#xff0c;导致各项标准之间难以实现相互之间的联通。这种形式下就需要实现环境与设备之间的监控管理、通…

HBuilderX的快捷键

快捷键说明ctrl /添加注释&#xff08;js&#xff1a;// 注释、css&#xff1a;/* 注释 */、vue/nvue模板&#xff1a; <!-- 注释 -->&#xff09;ctrl k格式化代码Ctrl C 拷贝当前行或者所选代码块到剪切板Ctrl X剪切当前行或所选代码块到剪切板Ctrl V粘贴剪切板上…

LeetCode LCP 04. 覆盖【二分图最大匹配,匈牙利算法】困难

本文属于「征服LeetCode」系列文章之一&#xff0c;这一系列正式开始于2021/08/12。由于LeetCode上部分题目有锁&#xff0c;本系列将至少持续到刷完所有无锁题之日为止&#xff1b;由于LeetCode还在不断地创建新题&#xff0c;本系列的终止日期可能是永远。在这一系列刷题文章…

400元左右的蓝牙耳机啥牌子好?400元价位蓝牙耳机推荐

随着人们越来越倾向于使用随身便携的电子产品&#xff0c;轻松上阵、无线自由的TWS蓝牙耳机越来越受消费者的青睐&#xff0c;成为现在耳机行业的新星&#xff0c;下面整理了几款400元价位的耳机品牌。 一、南卡小音舱Lite2蓝牙耳机 参考价格&#xff1a;239元 佩戴方式&…

AgentAI+ChatGPT给出答案-为什么即时通讯需要心跳

序言 人工智能ChatGpt 结合系统化的问题拆解, 现在已经能够进行问题的拆解与自问自答, 预计未来很多的脑力工作要被释放了, 作为即时通讯的开发人员, 我问问专业的问题 为什么即时通讯需要心跳 先看产品界面与使用结果 问题拆解过程 执行任务1: 概念搜索 “Executing “Res…

【hello Linux】基础IO

目录 1.C语言文件操作 1. 打开文件&#xff1a; 2. 文件操作 3. 关闭文件 2. C语言中的流操作 3. 系统文件IO 1. 接口介绍 2. 写文件 3. 读文件 4. 文件描述符fd 0 & 1 & 2 文件描述符&#xff1a; 文件描述符原理&#xff1a; 文件描述符的分配规则&#xff1a; 5. 重…

企业数字化转型如何做?看过来

一、什么是数字化转型&#xff1f; 企业数字化转型旨在以数字化技术为基础&#xff0c;建立一个与物理世界对应的数字世界。在数字化转型过程中&#xff0c;数据是核心&#xff0c;人工智能是手段&#xff0c;云化服务是形式&#xff0c;企业的组织制度、流程优化与重构及人才…

ROS学习——艰辛的环境安装之路一ROS安装Kinetic版本

ROS-Kinetic Kinetic版本的ROS是用在Ubuntu16.04版本下的&#xff0c;先确认Ubuntu版本 Kinetic安装的官方文档&#xff08;可以按照原文来&#xff09; http://wiki.ros.org/kinetic/Installation/Ubuntu 1.配置Ubuntu的软件仓库 在安装 Ubuntu 的过程中如果你系统选了中文…

电子表格 VS 数据网格,你的React应用程序应该怎么选?

电子表格和数据网格&#xff1a;乍一看他们似乎是可互换的组件&#xff0c;由于两者都是用表格显示来格式化大量数据&#xff0c;因此很难知道应该为React应用程序选择哪个选项。 尽管它们的外观相似&#xff0c;但提供了非常不同的功能——选择错误的一个将对用户体验产生负面…

vite面试题

为什么说vite比webpack更快 和webpack对比&#xff0c;为什么 vite 的冷启动、热启动、热更新都会快&#xff1f;这就要说说二者的区别。 使用 webpack 时&#xff0c;从 yarn start 命令启动&#xff0c;到最后页面展示&#xff0c;需要经历的过程&#xff1a; 以 entry 配置…

如何制作订单工序流转报表

使用外部数据分析工具&#xff0c;比如百度Sugar&#xff0c;连接草料二维码官方数据库&#xff0c;即可制作自定义可视化报表。本文会具体介绍订单工序流转报表的制作流程。 一、案例效果 订单工序流转报表可以帮助管理者快速查询各订单的最新进展、是否超期&#xff0c;关注…

SAP Web IDE本地环境搭建

SAP Web IDE本地环境搭建 1、JDK的安装及配置环境变量 可通过官网自行下载JDK&#xff1a; Java Downloads | Oracle 直接傻瓜式安装至默认路径“C:\Program Files\Java\jdk-17.0.2”&#xff0c;然后配置环境变量“JAVA_HOME”、“CLASSPATH”和“PATH”。 JAVA_HOME&…

MySQL的基础学习

文章目录 一、MySQL NULL 值处理二、MySQL 正则表达式三、MySQL 事务四、MySQL ALTER命令总结 一、MySQL NULL 值处理 MySQL 使用 SQL SELECT 命令及 WHERE 子句来读取数据表中的数据,但是当提供的查询条件字段为 NULL 时&#xff0c;该命令可能就无法正常工作。 为了处理这种…

HTTP常用请求头和响应头有哪些?

一、什么是http 超文本传输协议&#xff08; Hypertext Transfer Protocol &#xff0c;HTTP&#xff09;的请求和响应消息中&#xff0c;协议头部分的那些组件。用来准确描述正在获取的资源、服务器或者客户端的行为&#xff0c;定义了HTTP事务中的具体操作参数。 二、什么是…