C语言 | Leetcode C语言题解之第56题合并区间

devtools/2024/9/24 22:24:50/

题目:

题解

/*** 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().*/
struct vat
{int start;int end;
};int compare(struct vat* a,struct vat  *b)
{return a->start - b->start;
}int** merge(int** intervals, int intervalsSize, int* intervalsColSize, int* returnSize, int** returnColumnSizes)
{struct vat newVat[intervalsSize];for(int i =0; i < intervalsSize; i++){newVat[i].start = intervals[i][0];newVat[i].end   = intervals[i][1];}qsort(newVat,intervalsSize,sizeof(struct vat),compare);int **returnInteval = (int **)malloc(sizeof(int *) * intervalsSize);*returnColumnSizes  = (int *)malloc(sizeof(int ) * intervalsSize);*returnSize = 0;for(int i =0; i < intervalsSize; i++){if(*returnSize){int preEnd = returnInteval[*returnSize-1][1];if(newVat[i].start <= preEnd){//合并int  maxEnd = fmax(preEnd,newVat[i].end);returnInteval[*returnSize-1][1] = maxEnd;}else{//没有重合的int newRow = *returnSize;returnInteval[newRow]   = (int *)malloc(sizeof(int ) * 2);returnInteval[newRow][0] =  newVat[i].start;returnInteval[newRow][1] =  newVat[i].end;(*returnColumnSizes)[newRow] = 2;*returnSize = *returnSize + 1;}}else{int newRow = *returnSize;returnInteval[newRow]   = (int *)malloc(sizeof(int ) * 2);returnInteval[newRow][0] =  newVat[i].start;returnInteval[newRow][1] =  newVat[i].end;(*returnColumnSizes)[newRow] = 2;*returnSize = *returnSize + 1;}}return returnInteval;
}

http://www.ppmy.cn/devtools/23716.html

相关文章

vue2.7与vue2.6、vue3的区别

官网链接&#xff1a;https://v2.cn.vuejs.org/v2/guide/migration-vue-2-7.html -组合式与选项式 选项式&#xff1a;export default { 各种选项关键字名&#xff0c;都定好了&#xff0c;无需引入&#xff0c;配对放置即可}

什么是视频号小店?小店怎么做?详细玩法流程来了

大家好&#xff0c;我是电商笨笨熊 视频号小店成了今年电商市场又一热门项目&#xff1b; 作为腾讯推出的电商&#xff0c;不少人曾说过&#xff0c;视频号小店会成为下一个风口&#xff1b; 那么视频号小店到底是什么&#xff0c;值得投入吗&#xff0c;又该怎么做呢&#…

分布式事务Seata<XA模式、AT模式>解决方案思路(针对多数据源、分库分表、微服务、微服务分库分表4种场景)

seata的xa的方式解决 保证强一致性 原理说明&#xff1a; 1.启动seata服务器TC&#xff08;控制台7091可以查看&#xff09; 2.启动spring项目 初始化TM RM&#xff0c;实际上TM和RM注册到TC中 3.浏览器访问执行方法&#xff0c;TM向TC请求开启全局事务&#xff0c; 返回一个全…

PMP考试需要备考多长时间?

如果你已经有一定的项目管理经验&#xff0c;其实两个月左右的时间备考也来得及。如果是项目管理小白0基础&#xff0c;一般备考时间都是在三个月左右。都是要根据学员本身时间充裕程度来做考量&#xff0c;一般每天都要抽出半小时到一小时来学习&#xff0c;才可以应对8月份的…

前端自定义封装图片预览组件(支持多张图片预览 缩放):

封装图片预览组件&#xff1a; <template><div ref"previewWrapper" class"image-preview"><div class"overlay" v-if"showOverlay" click"closePreview"></div><div class"preview-conta…

对2023年图灵奖揭晓看法

2023年图灵奖揭晓&#xff0c;你怎么看&#xff1f; 2023年图灵奖&#xff0c;最近刚刚颁给普林斯顿数学教授 Avi Wigderson&#xff01;作为理论计算机科学领域的领军人物&#xff0c;他对于理解计算中的随机性和伪随机性的作用&#xff0c;作出了开创性贡献。这些贡献不仅推…

C语言内存函数

C语言内存函数 个人主页&#xff1a;大白的编程日记 个人专栏&#xff1a;大白的编程日记 文章目录 C语言内存函数前言一.memcpy函数1.1memcpy函数的使用1.2memcpy的模拟实现 二.memmove2.1memmove的使用2.2memmove的模拟实现 三.memse函数的使用3.1memset的使用3.2memset的模…

Python学习路线图及开源库和工具推荐

引言 Python作为一门易学易用且功能强大的编程语言&#xff0c;受到了广泛的欢迎和应用。作为一名想要学习Python的初学者&#xff0c;可能有些迷茫&#xff0c;不知道该如何入门&#xff0c;又该如何深入学习。本文将详细介绍Python的学习路线图&#xff0c;同时推荐一些高质…