日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

[LeetCode]Merge Intervals

發(fā)布時間:2025/3/18 编程问答 33 豆豆
生活随笔 收集整理的這篇文章主要介紹了 [LeetCode]Merge Intervals 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

題目:Merge Intervals

給定n個區(qū)間合并重合區(qū)間

思路:

先按照區(qū)間起點排序,然后合并下面情況:

1.起點相同,以最大的終點為新的終點;

2.前一個終點大于后一個的起點。

/*************************************************************************************************** Given a collection of intervals, merge all overlapping intervals. For example, Given [1,3],[2,6],[8,10],[15,18], return [1,6],[8,10],[15,18]. ***************************************************************************************************/ #include<stdio.h>struct Interval {int start;int end; };/*按區(qū)間起點排序*/ int cmp(const void *a , const void *b){struct Interval *intval1 = (struct Interval *)a;struct Interval *intval2 = (struct Interval *)b;return intval1->start - intval2->start; }/*** Definition for an interval.* struct Interval {* int start;* int end;* };*/ /*** 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){//數(shù)組為0*returnSize = 0;return NULL;}if(intervalsSize == 1){//只有一個區(qū)間*returnSize = 1;struct Interval *retIntv = (struct Interval*)malloc(sizeof(struct Interval));retIntv[0].start = intervals[0].start;retIntv[0].end = intervals[0].end;return retIntv;}qsort(intervals,intervalsSize,sizeof(struct Interval),cmp);//排序int length = 0,end = 0;int *starts = (int *)malloc(intervalsSize*sizeof(int));int *ends = (int *)malloc(intervalsSize*sizeof(int));memset(starts,-1,intervalsSize*sizeof(int));memset(ends,-1,intervalsSize*sizeof(int));for(int i = 0;i < intervalsSize;i++){starts[length] = intervals[i].start;ends[length] = intervals[i].end;while(i < intervalsSize - 1 && ends[length] >= intervals[i + 1].start){//合并前一個終點大于后一個的起點的區(qū)間i++;ends[length] = ends[length] > intervals[i].end ? ends[length] : intervals[i].end;}length++;}struct Interval *retIntv = (struct Interval*)malloc(length*sizeof(struct Interval));for(int i = 0;i < length;i++){retIntv[i].start = starts[i];retIntv[i].end = ends[i];}free(starts);free(ends);*returnSize = length;return retIntv; }void main(){//[1,3],[2,6],[8,10],[15,18]//[1,6],[2,3],[8,10],[15,18]//[1,6],[8,10],[2,3],[15,18]struct Interval *intervals = (struct Interval *)malloc(1*sizeof(struct Interval));intervals[0].start = 1;intervals[0].end = 6;//intervals[1].start = 5;//intervals[1].end = 10;//intervals[2].start = 2;//intervals[2].end = 3;//intervals[3].start = 15;//intervals[3].end = 18;int length = 0;struct Interval *retIntv = merge(intervals,1,&length);for(int i = 0;i < length;i++){printf("[%d,%d]\n",retIntv[i].start,retIntv[i].end);}free(intervals);free(retIntv); }

?

轉(zhuǎn)載于:https://www.cnblogs.com/yeqluofwupheng/p/6670543.html

與50位技術(shù)專家面對面20年技術(shù)見證,附贈技術(shù)全景圖

總結(jié)

以上是生活随笔為你收集整理的[LeetCode]Merge Intervals的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。