题解 | #主持人调度(二)#

主持人调度(二)

https://www.nowcoder.com/practice/4edf6e6d01554870a12f218c94e8a299

typedef struct {
    int start;
    int end;
} Activity;

typedef struct {
    int start;
    int end;
} Host;

int compare(const void* a, const void* b) {
    return ((Activity*)a)->start > ((Activity*)b)->start;
}
/**
 * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
 *
 * 计算成功举办活动需要多少名主持人
 * @param n int整型 有n个活动
 * @param startEnd int整型二维数组 startEnd[i][0]用于表示第i个活动的开始时间,startEnd[i][1]表示第i个活动的结束时间
 * @param startEndRowLen int startEnd数组行数
 * @param startEndColLen int* startEnd数组列数
 * @return int整型
 */

int minmumNumberOfHost(int n, int** startEnd, int startEndRowLen,
                       int* startEndColLen ) {
    // write code here
    int nHost = 1;
    Activity* activities = (Activity*)malloc(n * sizeof(Activity));
    Host* hosts = (Host*)malloc(n * sizeof(Host));

    for (int i = 0; i < n; i++) {
        activities[i].start = startEnd[i][0];
        activities[i].end = startEnd[i][1];
    }

    qsort(activities, n, sizeof(Activity), compare);

    hosts[0].start = activities[0].start;
    hosts[0].end = activities[0].end;

    int end = activities[0].end;

    for (int i = 1; i < n; i++) {
        int j = 0;
        for (j = 0; j < nHost; j++) {
            if (hosts[j].end <= activities[i].start) {
                hosts[j].start = activities[i].start;
                hosts[j].end = activities[i].end;
                break;
            }
        }
        if (j == nHost) {
            hosts[nHost].start = activities[i].start;
            hosts[nHost].end = activities[i].end;
            nHost++;
        }
    }

    free(activities);
    free(hosts);
    return nHost;
}

全部评论

相关推荐

况世奇才:我七月投的Java,面试官说搞大数据的,挂个Java的吸引进来投简历的,已经offer评估了看看能不能泡出来吧
点赞 评论 收藏
分享
09-13 08:41
服装/纺织设计
那一天的Java_J...:你第一次参加面试吗
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务