代码随想录day36| 435. 无重叠区间 、 763.划分字母区间 、56. 合并区间

435. 无重叠区间 - 力扣(LeetCode)

这道题其实和用最小数量箭引爆气球一样,代码差不多,都是求重叠区间的量

int cmp(const void *a,const void *b)
{
    return ((*((int**)a))[0] > (*((int**)b))[0]);
} 

int eraseOverlapIntervals(int** intervals, int intervalsSize, int* intervalsColSize) {
    if(intervalsSize == 0)
        return 0;
    qsort( intervals, intervalsSize, sizeof( intervals[0]),cmp);
    
    int result = 0;
    int i = 1;
    for(i = 1; i < intervalsSize; i++) {
    
        if(intervals[i][0] >= intervals[i-1][1])
            continue;
        else
           result++;
            intervals[i][1] = intervals[i][1] > intervals[i-1][1] ? intervals[i-1][1] : intervals[i][1];
    }

    return result;
}

763. 划分字母区间

局部最优:就时找这个区间字母中的最远位置,

如何找到这个最远的位置?

——可以用哈希表来记录

/**
 * Note: The returned array must be malloced, assume caller calls free().
 */
int* partitionLabels(char* s, int* returnSize) {
   int hash[27] ={0};
   for(int i = 0; i < strlen(s); s++){
        hash[s[i] - 'a'] = i;
   } 
   int* ans = (int*)malloc(sizeof(int) * 500);
   *returnSize = 0;
   int start = 0, end = 0;
   for(int j = 0; j < strlen(s); j++){
       end = fmax(end, hash[s[i] - 'a']);
       if (i == end) {
            partition[(*returnSize)++] = end - start + 1;
            start = end + 1;
    return partition;

}

错误:没有正确的认识到这个hash这记录的是位置,不是距离,要用 end - start + 1;表示

56. 合并区间

重叠区间其实代码都是相类似的,判断条件都大体不差,有区别的是要进行什么样的操作

/**
 * Return an array of arrays of size *returnSize.
 * The sizes of the arrays are returned as *returnColumnSizes array.
 * Note: Both returned array and *columnSizes array must be malloced, assume
 * caller calls free().
 */
int cmp(const void* a, const void* b) {
    return ((*((int**)a))[0] > (*((int**)b))[0]);
}

// 合并区间函数
int** merge(int** intervals, int intervalsSize, int* intervalsColSize, int* returnSize, int** returnColumnSizes) {
    int** result = NULL;
    *returnSize = 0;
    *returnColumnSizes = NULL;

    if (intervalsSize == 0) {
        return result;
    }


    result = (int**)malloc(intervalsSize * sizeof(int*));
    *returnColumnSizes = (int*)malloc(intervalsSize * sizeof(int));

    qsort(intervals, intervalsSize, sizeof(intervals[0]), cmp);

    result[*returnSize] = (int*)malloc(2 * sizeof(int));
    result[*returnSize] = intervals[0];
    (*returnColumnSizes)[*returnSize] = 2;
    (*returnSize)++;


    for (int i = 1; i < intervalsSize; i++) { 

        if (result[*returnSize - 1][1] >=  intervals[i][0]) {
        
            result[*returnSize - 1][1] =
                (result[*returnSize - 1][1] > intervals[i][1]) ? result[*returnSize - 1][1] : intervals[i][1];
        } else {
        
            result[*returnSize] = (int*)malloc(2 * sizeof(int));
            result[*returnSize] =  intervals[i];
            (*returnColumnSizes)[*returnSize] = 2;
            (*returnSize)++;
        }
    }

    return result;
}

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

智慧光伏:企业无纸化办公

随着科技的快速发展&#xff0c;光伏技术不仅成为推动绿色能源革命的重要力量&#xff0c;更在企业办公环境中扮演起引领无纸化办公的重要角色。智慧光伏不仅为企业提供了清洁、可持续的能源&#xff0c;更通过智能化的管理方式&#xff0c;推动企业向无纸化办公转型&#xff0…

MySQL三种开窗函数详细用法,图文详解

开窗函数的详细用法 第一章、开窗函数的语法1.1&#xff09;从聚合开窗函数讲起1.2&#xff09;开窗函数之取值1.3&#xff09;排名开窗函数 第一章、开窗函数的语法 开窗函数的语法为&#xff1a;over(partition by 列名1 order by 列名2 )&#xff0c;括号中的两个关键词par…

谈到视频编码标准时,实际指什么?

当在谈论一个视频编码标准时&#xff0c;实际指是什么&#xff1f;相关论文&#xff0c;还是编解码器代码&#xff0c;或者其他东西&#xff1f; 比如H.264视频编码标准&#xff0c;当论文或书上看到它时&#xff0c;通常是H.264/AVC的形式&#xff0c;如下&#xff1a; It was…

Linux:详解TCP协议(一)

文章目录 认识TCPTCP协议段格式 本篇主要总结的是TCP协议的一些字段 认识TCP TCP协议全称是传输控制协议&#xff0c;也就是说是要对于数据的传输进行一个控制 以上所示的是对于TCP协议进行数据传输的一个理解过程 全双工 至此就可以对于TCP协议是全双工的来进行理解了&…

蓝桥OJ3510 冶炼金属(暴力+二分)

冶炼金属 学习了b站Turing_Sheep的思路 一、暴力模拟 思路&#xff1a; b[i] a[i] / v b[1] a[1] / v b[2] a[2] / v .... b[n] a[n] / v 以上列举中v要满足所有的记录&#xff0c;但凡一个记录不满足&#xff0c;v就不满足题意。 从小到大列举v,设置v最大为1e6 设置一个标…

鸿蒙开发之ArkUI组件常用组件-CustomDialog/Video

CustomDialog 自定义弹窗&#xff08;CustomDialog&#xff09;可用于广告、中奖、警告、软件更新等与用户交互响应操作。我们可以通过CustomDialogController类显示自定义弹窗。 创建自定义弹窗 使用CustomDialog装饰器装饰自定义弹窗CustomDialog装饰器用于装饰自定义弹窗&a…

Vuepress 2从0-1保姆级进阶教程——美化与模板

Vuepress 2 专栏目录 1. 入门阶段 Vuepress 2从0-1保姆级入门教程——环境配置篇Vuepress 2从0-1保姆级入门教程——安装流程篇Vuepress 2从0-1保姆级入门教程——文档配置篇Vuepress 2从0-1保姆级入门教程——范例与部署 2.进阶阶段 Vuepress 2从0-1保姆级进阶教程——全文搜索…

【Java程序设计】【C00388】基于(JavaWeb)Springboot的校园竞赛管理系统(有论文)

Springboot的校园竞赛管理系统&#xff08;有论文&#xff09; 项目简介项目获取开发环境项目技术运行截图 博主介绍&#xff1a;java高级开发&#xff0c;从事互联网行业六年&#xff0c;已经做了六年的毕业设计程序开发&#xff0c;开发过上千套毕业设计程序&#xff0c;博客…

基于ZHW3548的红外额温枪解决方案

红外额温枪&#xff0c;非接触式测量最典型的方法是红外测温。自红外辐射原理被发现以来&#xff0c;红外技术被广泛应用在温度测量中。红外测温仪具有测温范围广&#xff0c;响应速度快&#xff0c;灵敏度高等特点。红外耳温枪、红外额温计和红外筛检仪都属于非接触式体温计。…

实验3 中文分词

必做题&#xff1a; 数据准备&#xff1a;academy_titles.txt为“考硕考博”板块的帖子标题&#xff0c;job_titles.txt为“招聘信息”板块的帖子标题&#xff0c;使用jieba工具对academy_titles.txt进行分词&#xff0c;接着去除停用词&#xff0c;然后统计词频&#xff0c;最…

鱼眼相机的测距流程及误差分析[像素坐标系到空间一点以及测距和误差分析]

由于最近在整理单目测距的内容&#xff0c;顺手也总结下鱼眼相机的测距流程和误差分析&#xff0c;如果有错误&#xff0c;还请不吝赐教。 参考链接: 鱼眼镜头的成像原理到畸变矫正&#xff08;完整版&#xff09; 相机模型总结&#xff08;针孔、鱼眼、全景&#xff09; 三维…

Linux 基础IO [缓冲区文件系统]

&#x1f493;博主CSDN主页:麻辣韭菜-CSDN博客&#x1f493;   ⏩专栏分类&#xff1a;http://t.csdnimg.cn/G90eI⏪   &#x1f69a;代码仓库:Linux: Linux日常代码练习&#x1f69a;   &#x1f339;关注我&#x1faf5;带你学习更多Linux知识   &#x1f51d; 目录 前言…

HarmonyOS实战开发-实现自定义弹窗

介绍 本篇Codelab基于ArkTS的声明式开发范式实现了三种不同的弹窗&#xff0c;第一种直接使用公共组件&#xff0c;后两种使用CustomDialogController实现自定义弹窗&#xff0c;效果如图所示 相关概念 AlertDialog&#xff1a;警告弹窗&#xff0c;可设置文本内容和响应回调…

Swift 从获取所有 NSObject 对象聊起:ObjC、汇编语言以及底层方法调用链(三)

概览 承接上一篇博文: Swift 从获取所有 NSObject 对象聊起:ObjC、汇编语言以及底层方法调用链(二)我们在其中讨论了如何使用第三方强大通用的钩子库 SwiftHook 来协助我们完成 NSObject 构造器 init 的 SWIZZ 操作。我们还讨论了为什么用 print 打印对象信息时会发生崩溃…

在Windows系统上安装多个 Nodejs

前言 在Windows系统安装Nodejs 在Windows系统上安装多个 Nodejs v14.16.1安装位置 D:\sde\nodejs\node-v14.16.1-win-x64 v16.20.2安装位置 D:\sde\nodejs\node-v16.20.2-win-x64 v18.20.0安装位置 D:\sde\nodejs\node-v18.20.0-win-x64 v20.12.0安装位置 D:\sde\nod…

YOLOv9改进策略 :neck优化 | 路径融合GFPN,小目标到大目标一网打尽 | 轻骨干重Neck的轻量级目标检测器GiraffeDet

&#x1f4a1;&#x1f4a1;&#x1f4a1;本文改进内容&#xff1a;设计了一种新的路径融合GFPN&#xff1a;包含跳层与跨尺度连接&#xff0c;改进思路来自ICLR2022 GiraffeDet的核心思想。 &#x1f4a1;&#x1f4a1;&#x1f4a1;GFPN和六个检测头结合&#xff0c;这种跳层…

集体出走的Stability AI 发布全新代码大模型,3B以下性能最优,超越Code Llama和DeepSeek-Coder

Stability AI又有新动作&#xff01;程序员又有危机了&#xff1f; 3月26日&#xff0c;Stability AI推出了先进的代码语言模型Stable Code Instruct 3B&#xff0c;该模型是在Stable Code 3B的基础上进行指令调优的Code LM。 Stability AI 表示&#xff0c;Stable Code Instru…

【python】flask执行上下文context,请求上下文和应用上下文原理解析

✨✨ 欢迎大家来到景天科技苑✨✨ &#x1f388;&#x1f388; 养成好习惯&#xff0c;先赞后看哦~&#x1f388;&#x1f388; &#x1f3c6; 作者简介&#xff1a;景天科技苑 &#x1f3c6;《头衔》&#xff1a;大厂架构师&#xff0c;华为云开发者社区专家博主&#xff0c;…

2024河北石家庄矿业矿山展览会|河北智慧矿山展会|河北矿博会

2024中国&#xff08;石家庄&#xff09;国际矿业博览会      时间&#xff1a;2024年7月4-6日 地点&#xff1a;石家庄国际会展中心.正定      随着全球经济的持续增长和矿产资源需求的不断攀升&#xff0c;矿业行业正迎来前所未有的发展机遇。作为矿业领域的盛会&…

3.28C++

复数类的实现&#xff0c;写出三种构造函数&#xff0c;算术运算符、关系运算符、逻辑运算符重载尝试实现自增、自减运算符的重载 #include <iostream> using namespace std; class Num {int rel; //实部int vir; //虚部 public:Num():rel(2),vir(1){}Num(int rel,…
最新文章