LeetCode-56-Merge Intervals(C语言实现)
2018-01-03 07:15
471 查看
/**
* 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().
*/
int cmp(const void *a, const void *b){
return ((struct Interval*)a) -> start - ((struct Interval*)b) -> start;
}
struct Interval* merge(struct Interval* intervals, int intervalsSize, int* returnSize) {
qsort(intervals, intervalsSize, sizeof(struct Interval), cmp);
*returnSize = intervalsSize;
struct Interval* res = (struct Interval*)malloc(sizeof(struct Interval) * intervalsSize);
if(intervalsSize == 0 || intervalsSize == 1)
return intervals;
int i, j, t_s, t_e;
j = 0;
t_s = intervals[0].start;
t_e = intervals[0].end;
for(int i = 1; i < intervalsSize; ++i){
if(t_e >= intervals[i].end){
--(*returnSize);
}
else if(t_e >= intervals[i].start){
t_e = intervals[i].end;
--(*returnSize);
}
else{
res[j].start = t_s;
res[j].end = t_e;
++j;
t_s = intervals[i].start;
t_e = intervals[i].end;
}
}
res[j].start = t_s;
res[j].end = t_e;
return res;
}
* 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().
*/
int cmp(const void *a, const void *b){
return ((struct Interval*)a) -> start - ((struct Interval*)b) -> start;
}
struct Interval* merge(struct Interval* intervals, int intervalsSize, int* returnSize) {
qsort(intervals, intervalsSize, sizeof(struct Interval), cmp);
*returnSize = intervalsSize;
struct Interval* res = (struct Interval*)malloc(sizeof(struct Interval) * intervalsSize);
if(intervalsSize == 0 || intervalsSize == 1)
return intervals;
int i, j, t_s, t_e;
j = 0;
t_s = intervals[0].start;
t_e = intervals[0].end;
for(int i = 1; i < intervalsSize; ++i){
if(t_e >= intervals[i].end){
--(*returnSize);
}
else if(t_e >= intervals[i].start){
t_e = intervals[i].end;
--(*returnSize);
}
else{
res[j].start = t_s;
res[j].end = t_e;
++j;
t_s = intervals[i].start;
t_e = intervals[i].end;
}
}
res[j].start = t_s;
res[j].end = t_e;
return res;
}
相关文章推荐
- LeetCode 56 Merge Intervals(Python实现及详解)
- LeetCode-59-Spiral Matrix II(C语言实现)
- LeetCode-19-Remove Nth Node From End of List(C语言实现)
- LeetCode-21-Merge Two Sorted Lists(C语言实现)
- LeetCode(56)Merge Intervals
- 【LeetCode】C# 56、Merge Intervals
- LeetCode-56-Merge Intervals Python自定义sort,贪心
- leetcode || 56、 Merge Intervals
- 【leetcode】Array—— Merge Intervals(56)
- LeetCode-62-Unique Paths(C语言实现)
- LeetCode-6-ZigZag Conversion(C语言实现)
- leetcode 56: Merge Intervals
- LeetCode(56)Merge Intervals
- 【LeetCode-面试算法经典-Java实现】【056-Merge Intervals(区间合并)】
- LeetCode 56 Merge Intervals
- LeetCode 56:Merge Intervals
- LeetCode 56, Merge Intervals 从 TLE 到 AC
- leetCode 56, Merge Intervals
- [leetcode]Valid Sudoku(判断有效数独 C语言实现)
- LeetCode 56 --- Merge Intervals