• 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;
    }

    Connected Components

  • 相关阅读:
    如何获取公网IP
    v语言初体验
    利用python实现修改阿里云DNS值解析
    谈谈 ansible handlers
    使用dockerfile,创建gitblit镜像
    再谈docker基本命令
    使用tcpdump探测TCP/IP三次握手
    利用python list 完成最简单的DB连接池
    nginx报错:./configure: error: C compiler cc is not found, gcc 是已经安装了的
    探寻TP-Link路由器的登录验证
  • 原文地址:https://www.cnblogs.com/guxuanqing/p/9879879.html
Copyright © 2020-2023  润新知