合并数组区间(合并数组区间怎么设置)

合并数组区间(合并数组区间怎么设置)好的 以下是一个简单的用 C 语言 实现 区间 合并 的代码模板 c include stdio h 定义 区间 结构体 typedef struct interval int start int end Interval 区间 合并 函数 Interval merge intervals Interval intervals int size int returnSize if size lt 1 stdio h

好的,以下是一个简单的用C语言

实现 区间 合并

的代码模板:

 #include <stdio.h>  // 定义 区间 结构体 typedef struct interval { int start; int end; } Interval;  // 区间 合并 函数 Interval* merge_intervals(Interval* intervals, int size, int* returnSize) { if (size <= 1) { *returnSize = size; return intervals; }  // 将 区间 按照起点从小到大排序 for (int i = 0; i < size; i++) { for (int j = i + 1; j < size; j++) { if (intervals[i].start > intervals[j].start) { Interval temp = intervals[i]; intervals[i] = intervals[j]; intervals[j] = temp; } } }  // 合并 区间 Interval* result = (Interval*)malloc(sizeof(Interval) * size); int index = 0; result[0] = intervals[0]; for (int i = 1; i < size; i++) { if (result[index].end >= intervals[i].start) { result[index].end = fmax(result[index].end, intervals[i].end); } else { index++; result[index] = intervals[i]; } } *returnSize = index + 1;  return result; }  // 测试 int main() { Interval intervals[] = {{1, 3}, {2, 6}, {8, 10}, {15, 18}}; int size = sizeof(intervals) / sizeof(intervals[0]);  int returnSize; Interval* result = merge_intervals(intervals, size, &returnSize);  printf("["); for (int i = 0; i < returnSize; i++) { printf("[%d, %d]", result[i].start, result[i].end); if (i != returnSize - 1) { printf(", "); } } printf("] ");  free(result);  return 0; } 

这个代码模板的

实现 思路

是:先按照

区间

起点从小到大排序,然后依次

合并

相邻的

区间

,如果相邻两个

区间

不能

合并

,则将当前

区间

加入结果中。最后返回

合并

后的

区间 数组

今天的文章 合并数组区间(合并数组区间怎么设置)分享到此就结束了,感谢您的阅读。
编程小号
上一篇 2025-04-06 22:30
下一篇 2026-03-06 15:11

相关推荐

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
如需转载请保留出处:https://bianchenghao.cn/bian-cheng-ri-ji/50759.html