力扣第29天----第435题、第763题、第56题

2023-11-01

# 力扣第29天----第435题、第763题、第56题

一、第435题–无重叠区间

​ 跟射箭那个差不多,排序->相邻比较重叠->边缘合并->计数

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

二、第763题–划分字母区间

​ 记录字母出现最大位置→遍历数组判断是否达到最大位置→达到时满足条件,长度记录→left+1,开启下一段划分。

class Solution {
public:
    vector<int> partitionLabels(string s) {
        int site[26] = {0};
        for (int i = 0; i<s.size(); i++){
            site[s[i] - 'a'] = i;
        }
        int left = 0;
        int right = 0;
        vector<int> result;
        for(int i = 0; i<s.size(); i++){
            right = max(right, site[s[i] - 'a']);
            if(right == i){
                result.push_back(right - left + 1);
                left = i+1;
            }
        }
        return result;
    }
};

三、第56题–合并区间

​ 跟射箭那个差不多,也是区间问题的套路。

class Solution {
public:
    static bool cmp (const vector<int>& a, const vector<int>& b) {
        return a[0] < b[0]; // 改为左边界排序
    }
    vector<vector<int>> merge(vector<vector<int>>& intervals) {
        vector<vector<int>> result;
        if(intervals.size() == 0) return result;
        sort(intervals.begin(), intervals.end(), cmp);
        result.push_back(intervals[0]);
        for(int i = 1; i<intervals.size(); i++){
            
            if(intervals[i][0] <= result.back()[1]){
                
                result.back()[1] = max(intervals[i][1], result.back()[1]);
            }
            else{
                result.push_back(intervals[i]);
            }
        }
        return result;
    }
};
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

力扣第29天----第435题、第763题、第56题 的相关文章

  • 【华为OD机试真题 Python】最左侧冗余覆盖子串

    前言 本专栏将持续更新华为OD机试题目 并进行详细的分析与解答 包含完整的代码实现 希望可以帮助到正在努力的你 关于OD机试流程 面经 面试指导等 如有任何疑问 欢迎联系我 wechat steven moda email nansun09
  • 简单的编写一个通讯录并可进行增删改查功能

    改通讯录分为三个模块 test c contact c contact h 下面依次给我相应的代码 有想问的或者觉得有帮助的帮忙点个赞和关注一下哈 蟹蟹 主要用到了结构体指针来进行对结构体的修改查找之类的算法 test c define C

随机推荐

  • iOS 底层解析weak的实现原理

    参考地址 http www cocoachina com ios 20170328 18962 html weak 实现原理的概括 Runtime维护了一个weak表 用于存储指向某个对象的所有weak指针 weak表其实是一个hash 哈
  • 深度学习之---yolov1,v2,v3详解

    写在前面 如果你想 run 起来 立马想看看效果 那就直接跳转到最后一张 动手实践 看了结果再来往前看吧 开始吧 一 YOLOv1 简介 这里不再赘述 之前的我的一个 GitChat 详尽的讲述了整个代码段的含义 以及如何一步步的去实现它
  • 【数字转换为汉字】

    项目场景 通常这种情况下 后端返回是数组 如果想要把数组这样显示出来 就需要把数组的索引值转换为汉字显示 如 11显示为十一 21显示为二十一 实现代码讲解 NoToChinese num 如果传递过来的值不是数据类型 则直接报错 if d
  • 蓝桥杯C/C++省赛:振兴中华

    目录 题目描述 思路分析 AC代码 题目描述 小明参加了学校的趣味运动会 其中的一个项目是 跳格子 地上画着一些格子 每个格子里写一个字 如下所示 从我做起振 我做起振兴 做起振兴中 起振兴中华 比赛时 先站在左上角的写着 从 字的格子里
  • Vue_shop(Element-UI)优化打包上线

    自己从头到尾打的源码链接 https gitee com bai xianger vue shop 一 项目的打包优化 1 网页顶部添加进度条效果 安装运行依赖nprogresst 链接 https github com rstacruz
  • 1053. 交换一次的先前排列

    转载请声明地址四元君 1053 交换一次的先前排列 题目难度 Medium 给你一个正整数的数组 A 其中的元素不一定完全不同 请你返回可在 一次交换 交换两数字 A i 和 A j 的位置 后得到的 按字典序排列小于 A 的最大可能排列
  • 无向图的广度优先遍历和深度优先遍历

    public class MGraph private char vexs 顶点 private int edge 存储边的二维数组 private int arcNum 边的数目 private boolean visited 访问标志数
  • Java学习笔记 类的特性:拓展知识与案例

    1 this的使用 使用场合 从一个构造方法调用到另一个构造方法 作用 缩短程序代码 减少开发程序时间 规则 通过关键字this来调用 this必须写在构造方法的第一行位置 在圆柱体类Cylinder里 用一个构造方法调用另一个构造方法 c
  • 浮点的加减计算方法

    浮点的计算方法 1 计算步骤 2 基本要素 2 1 浮点数 2 2 规格化浮点数 2 3 偏置指数 2 4 IEEE浮点数 2 5 特点 3 计算实例 4 舍入机制 扩展 乘除计算步骤 1 计算步骤 浮点数格式 单精度 符号位1位 阶码8位
  • MySQL权限管理

    如果声明了 WITH GRANT OPTION 那么权限的接收者也可以将此权限赋予他人 否则 就不能授权他人 MySQL权限管理 mysql gt SHOW GRANTS G 1 row Grants for root localhost
  • 使用SQL Server 获取插入记录后的ID(自动编号)

    要获取此ID 最简单的方法就是在查询之后select indentity SQL语句创建数据库和表 复制代码代码如下 create database dbdemo go use dbdemo go create table tbldemo
  • Pytorch训练时重要步骤

    目录 optimizer zero grad 代码解读 调用频率和结果 loss backward optimizer step 在学习pytorch时 官方文档 有一段示例代码 def train loop dataloader mode
  • Unity学习笔记之动画系统

    目录 Animation 动画系统 动画文件的设置 Animator 动画系统 Navigation 寻路系统 BlendTree 混合树 其他动画相关概念 Animation 动画系统 Animation是老版的动画系统 新版的动画系统是
  • (转载) min()的宏定义中的(void) (&_x == &_y)的含义

    Original Address http www crifan com 2010 08 13 order min macro definition void amp x amp y the meaning of 整理 min 的宏定义中的
  • tab切换,左右加箭头,点击箭头实现tab切换

    和正常tab切换一样原理 点击箭头多了步计算
  • 快捷指令获取url内容_iPhone快捷指令打开任意APP中的一个页面

    0x00 吹牛逼 其实这么说有些夸张 其实并不是没有条件的 标题那么取只不过是标题党罢了 吸波流量 骗点点赞关注什么的 最近趁着iPhone SE2便宜 入了人生第一台苹果 最上头的那就是快捷指令了 这玩意可以编程简单多了 开发者文档写的又
  • python3学习之路 -- 4.9)迭代器

    1 for 变量 in 可迭代 pass 可迭代 str list tuple dic set open 可迭代的数据类型都会提供一个迭代器 这个迭代器会将数据类型中的数据逐一的拿到 2 获取迭代器的2种方案 1 iter 内置函数可以直接
  • 深入分析 (迪杰斯特拉算法) Dijkstra 算法实现原理

    迪杰斯特拉 Dijkstra 算法是典型最短路径算法 用于计算一个节点到其他节点的最短路径 它的主要特点是以起始点为中心向外层层扩展 广度优先搜索思想 直到扩展到终点为止 基本思想 通过Dijkstra计算图G中的最短路径时 需要指定起点s
  • Chrome开发者工具详解 (二)

    Chrome开发者工具详解 二 前言 一 Console面板 定位面页节点 Css选择器进行节点定位 事件监听 二 查看节点上注册的监听器 总结 前言 Console面板是与网页进行交互的控制台窗口 它用于DOM树对象信息和调试代码 掌握C
  • 力扣第29天----第435题、第763题、第56题

    力扣第29天 第435题 第763题 第56题 文章目录 一 第435题 无重叠区间 二 第763题 划分字母区间 三 第56题 合并区间 一 第435题 无重叠区间 跟射箭那个差不多 排序 gt 相邻比较重叠 gt 边缘合并 gt 计数