56.merge intervals
56.merge intervals
56.merge intervals Given a collection of intervals, merge all overlapping intervals. Example 1: Input: [[1,3],[2,6],[8,10],[15,18]] Output: [[1,6],[8,10],[15,18]] Explanation: Since intervals [1,3] and [2,6] overlaps, merge them into [1,6]. Example 2: Input: [[1,4],[4,5]] Output: [[1,5]] Explanation: Intervals [1,4] and [4,5] are considerred overlapping.
// 4ms #include <stdio.h> #include <stdlib.h> #include <math.h> #include <limits.h> //Definition for an interval. struct Interval { int start; int end; }; int comp(const void *x, const void *y) { struct Interval a = *(struct Interval *)x; struct Interval b = *(struct Interval *)y; // ASC return a.start - b.start; } /** * Return an array of size *returnSize. * Note: The returned array must be malloced, assume caller calls free(). */ struct Interval* merge(struct Interval* intervals, int intervalsSize, int* returnSize) { if(intervalsSize == 0) return intervals; struct Interval *result = (struct Interval *)malloc(sizeof(struct Interval) * intervalsSize); qsort(intervals, intervalsSize, sizeof(struct Interval), comp); *returnSize = 0; result[0].start = intervals[0].start; result[0].end = intervals[0].end; for (int i = 1; i < intervalsSize; ++i) { if(result[*returnSize].end < intervals[i].start) { ++*returnSize; result[*returnSize].start = intervals[i].start; result[*returnSize].end = intervals[i].end; }else if (result[*returnSize].end < intervals[i].end) { result[*returnSize].end = intervals[i].end; } //(result[*returnSize].end >= intervals[i].end) } ++*returnSize; return result; }
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 单线程的Redis速度为什么快?
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 展开说说关于C#中ORM框架的用法!
2015-10-30 cnblogs技术知识共享