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

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

大家好,我是讯享网,很高兴认识大家。

好的,以下是一个简单的用C语言实现区间合并的代码模板:


讯享网

#include &lt;stdio.h&gt; // 定义<em>区间</em>结构体 typedef struct interval { int start; int end; } Interval; // <em>区间</em><em>合并</em>函数 Interval* merge_intervals(Interval* intervals, int size, int* returnSize) { if (size &lt;= 1) { *returnSize = size; return intervals; } // 将<em>区间</em>按照起点从小到大排序 for (int i = 0; i &lt; size; i++) { for (int j = i + 1; j &lt; size; j++) { if (intervals[i].start &gt; intervals[j].start) { Interval temp = intervals[i]; intervals[i] = intervals[j]; intervals[j] = temp; } } } // <em>合并</em><em>区间</em> Interval* result = (Interval*)malloc(sizeof(Interval) * size); int index = 0; result[0] = intervals[0]; for (int i = 1; i &lt; size; i++) { if (result[index].end &gt;= 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, &amp;returnSize); printf(&quot;[&quot;); for (int i = 0; i &lt; returnSize; i++) { printf(&quot;[%d, %d]&quot;, result[i].start, result[i].end); if (i != returnSize - 1) { printf(&quot;, &quot;); } } printf(&quot;] &quot;); free(result); return 0; } 

讯享网

这个代码模板的实现思路是:先按照区间起点从小到大排序,然后依次合并相邻的区间,如果相邻两个区间不能合并,则将当前区间加入结果中。最后返回合并后的区间数组

小讯
上一篇 2025-05-11 07:00
下一篇 2025-06-12 21:23

相关推荐

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容,请联系我们,一经查实,本站将立刻删除。
如需转载请保留出处:https://51itzy.com/kjqy/161841.html