2026/1/11 12:08:54
网站建设
项目流程
某网站开发项目成本估计,网站建设安全需求,古镇小企业网站建设,网站建设一条龙全包以数组 intervals 表示若干个区间的集合#xff0c;其中单个区间为 intervals[i] [starti, endi] 。请你合并所有重叠的区间#xff0c;并返回 一个不重叠的区间数组#xff0c;该数组需恰好覆盖输入中的所有区间 。示例 1#xff1a;
输入#xff1a;intervals [[1,3],…以数组 intervals 表示若干个区间的集合其中单个区间为 intervals[i] [starti, endi] 。请你合并所有重叠的区间并返回 一个不重叠的区间数组该数组需恰好覆盖输入中的所有区间 。示例 1输入intervals [[1,3],[2,6],[8,10],[15,18]]输出[[1,6],[8,10],[15,18]]解释区间 [1,3] 和 [2,6] 重叠, 将它们合并为 [1,6].示例 2输入intervals [[1,4],[4,5]]输出[[1,5]]解释区间 [1,4] 和 [4,5] 可被视为重叠区间。示例 3输入intervals [[4,7],[1,4]]输出[[1,7]]解释区间 [1,4] 和 [4,7] 可被视为重叠区间。提示1 intervals.length 104intervals[i].length 20 starti endi 104解法1、第一个区间的右边界5在第二个区间之间4, 6则要更新第一个区间的右边界为62、第一个区间的右边界3小于第二个区间的左边界4则将第二个区间作为新增区间3、第一个区间的右边界8大于第二个区间的右边界6则第一个区间保持不变第二个区间被忽略/** * 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(). */ int CompareInt(const void* a, const void* b) { int* x *(int**)a; int* y *(int**)b; if (x[0] ! y[0]) { return x[0] - y[0]; } return (x[1] - y[1]); } int** merge(int** intervals, int intervalsSize, int* intervalsColSize, int* returnSize, int** returnColumnSizes) { // qsort qsort(intervals, intervalsSize, sizeof(intervals[0]), CompareInt); int** res (int**)malloc(sizeof(int) * intervalsSize * 2); *returnColumnSizes malloc(sizeof(int) * intervalsSize); for (int i 0; i intervalsSize; i) { res[i] (int*)malloc(sizeof(int) * 2); } res[0] intervals[0]; (*returnColumnSizes)[0] 2; int cnt 0; for (int i 1; i intervalsSize; i) { if (intervals[i][0] res[cnt][1]) { if (intervals[i][1] res[cnt][1]) { res[cnt][1] intervals[i][1]; } } else { cnt; res[cnt] intervals[i]; } (*returnColumnSizes)[cnt] 2; } // go through all the element and get array *returnSize cnt 1; return res; }