✌粤嵌—2024/4/11—合并区间✌

代码实现:

/*** 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().*/// 交换
void swap(int *m, int *n) {int temp = *m;*m = *n;*n = temp;
}// 快排
void sort(int **nums, int l, int r) { // 左闭右开if (r - l <= 2) {if (r - l <= 1) { // 剩余个数:<= 1return;} if (nums[r - 1][0] < nums[l][0]) { // 剩余个数:= 2 且后者小于前者 交换swap(&nums[r - 1][0], &nums[l][0]);swap(&nums[r - 1][1], &nums[l][1]);}return;}int x = nums[l][0];int y = nums[l][1];int i = l, j = r - 1;while (i < j) {while (i < j && nums[j][0] >= x) {j--;}if (i < j) {nums[i][0] = nums[j][0];nums[i][1] = nums[j][1];i++;}while (i < j && nums[i][0] <= x) {i++;}if (i < j) {nums[j][0] = nums[i][0];nums[j][1] = nums[i][1];j--;}}nums[i][0] = x, nums[i][1] = y;sort(nums, l, i);sort(nums, i + 1, r);
}int** merge(int **intervals, int intervalsSize, int *intervalsColSize, int *returnSize, int **returnColumnSizes){if (intervalsSize == 0) {return NULL;}*returnSize = 0;// 按左边界(从小到大)快排sort(intervals, 0, intervalsSize); // 左闭右开*returnColumnSizes = malloc(sizeof(int) * intervalsSize);int **res = malloc(sizeof(int*) * intervalsSize); // 记录结果int left = intervals[0][0];int right = intervals[0][1];for (int i = 1; i < intervalsSize; i++) {if (right >= intervals[i][0]) {right = right > intervals[i][1] ? right : intervals[i][1];} else {(*returnColumnSizes)[(*returnSize)] = 2;res[(*returnSize)] = malloc(sizeof(int) * 2);res[(*returnSize)][0] = left;res[(*returnSize)][1] = right;(*returnSize)++;left = intervals[i][0];right = intervals[i][1];}}// 记录合并的最后一个区间(*returnColumnSizes)[(*returnSize)] = 2;res[(*returnSize)] = malloc(sizeof(int) * 2);res[(*returnSize)][0] = left;res[(*returnSize)][1] = right;(*returnSize)++;return res;
}

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

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

UE5、CesiumForUnreal实现建筑白模生成及白模美化功能

1.实现目标 在专栏上篇文章基于GeoJson文件生成城市级白模(本文建筑白模数量12w+)的基础上修改,计算法线和纹理坐标,并基于特定材质进行美化,美化后的白模GIF动图如下所示: 文章目录 1.实现目标2.实现过程2.1 基于Cesium材质美化2.1.1实现原理2.1.2 C++代码2.1.3 蓝图应…

基于SSM+Jsp+Mysql的多人命题系统

开发语言&#xff1a;Java框架&#xff1a;ssm技术&#xff1a;JSPJDK版本&#xff1a;JDK1.8服务器&#xff1a;tomcat7数据库&#xff1a;mysql 5.7&#xff08;一定要5.7版本&#xff09;数据库工具&#xff1a;Navicat11开发软件&#xff1a;eclipse/myeclipse/ideaMaven包…

免费泛域名SSL如何申请,和通配符有什么区别

-----让我们明确什么是泛域名。所谓泛域名&#xff0c;是指使用星号&#xff08;*&#xff09;作为子域名的占位符&#xff0c;它可以匹配任意子域名。-----而通配符在域名中&#xff0c;它可以出现在主域名的任何位置&#xff0c;它可以用于主域名和子域名的保护。 主要应用场…

从C到JAVA之学习JAVA的第一周笔记

文章目录 java语言概述JDK与JRE编写执行过程第一份java代码解读编写编译运行其他 注释三种注释方法 java API文档关键字标识符数据类型基本数据类型自动类型提升规则引用数据类型 string概述String与基本数据类型的变量间的运算 运算符键盘录入运行控制语句数组定义与静态初始化…

【Java基础】19.继承(面向对象的三大特征:封装、继承、多态)

文章目录 前言一、继承的概念二、继承的步骤1.类的继承格式2.继承的实例3.继承类型 三、继承的特性四、继承的关键字1.extends关键字2.implements关键字3.super 与 this 关键字4.final 关键字 五、构造器 前言 一、继承的概念 继承是java面向对象编程技术的一块基石&#xff…

JavaCard学习笔记: CAP Component 之 Class Component

文章目录 整体结构tag和size字段signature_pool_length和signature_pooltype_descriptor结构导入类型编码导入项签名示例导入类导入数组导入远程方法 interfaces[]interface_info结构flagsinteface_countsuperinterfacesinterface_name class_info_compact classes[]结构flagsi…

动手写sql 《牛客网80道sql》

第1章&#xff1a;SQL编写基础逻辑和常见问题 基础逻辑 SELECT语句: 选择数据表中的列。FROM语句: 指定查询将要从哪个表中检索数据。WHERE语句: 过滤条件&#xff0c;用于提取满足特定条件的记录。GROUP BY语句: 对结果进行分组。HAVING语句: 对分组后的结果进行条件过滤。O…

rust 卸载重新安装 安装

原因&#xff1a;接触区块链时报错 linking with x86_64-w64-mingw32-gcc failed: exit code: 1 Rust编译需要C环境&#xff0c;如果你没有&#xff0c;Rust也能安装成功&#xff0c;只是无法编译代码 C的编译工具有两个&#xff0c;一个是msvc&#xff0c;也就是visual studi…

程序员修炼之道 05:务实的方法②

不记录&#xff0c;等于没读。 这里是我阅读《程序员修炼之道》这本书的记录。 本章继续介绍一些提示和技巧。无论是编写代码还是做架构设计&#xff0c;又或者是写文档或估算进度&#xff0c;这些提示和技巧适用于软件开发的所有层级。只要在开发过程中牢记这些基本原则&…

大数据学习的第三天

文章目录 学习大数据命令的方式查看文件拷贝文件的方式添加数据的方式 出现了问题移动文件 hadoop工作流程和工作机制的方式namenodedatanodesecondarynamenode(主节点) 学习大数据命令的方式 查看文件 hadoop fs -cat /test/2.txt下载文件 hadoop fs -get -f /test/2.txt-f …

Python | Leetcode Python题解之第35题搜索插入位置

题目&#xff1a; 题解&#xff1a; class Solution:def searchInsert(self, nums: List[int], target: int) -> int:left, right 0, len(nums) #采用左闭右开区间[left,right)while left < right: # 右开所以不能有,区间不存在mid left (right - left)//2 # 防止溢出…

【Python】使用Python计算简单数值积分

题外话&#xff0c;Python语言命名的来源&#xff1a;&#xff08;见下图&#xff09;Monty Python巨蟒剧团 1、积分题目&#xff08;3&#xff09; 2、解析解答 3、Python计算代码 import math import scipy.integrate as integrate# 积分区间 # x_min 0.0 # 1 # x_min …