题解 | 主持人调度(二)

主持人调度(二)

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

import java.util.*;


public class Solution {
    /**
     * 贪心算法
     * <p>
     * 不要将开始时间和结束时间作为一个整体看,先将开始时间和结束时间分开
     * 将开始时间和结束时间分开并排序
     * 先固定一个结束时间,遍历开始时间,如果开始时间小于结束时间,主持人就加 1
     * 如果开始时间大于结束时间,就可以重复使用一个主持人,主持人数不变,将结束时间后移一个,接着遍历开始时间
     */
    public int minmumNumberOfHost(int n, int[][] startEnd) {
        if (n == 0 || startEnd == null) {
            return 0;
        }
        int[] start = new int[n];
        int[] end = new int[n];
        for (int i = 0; i < n; i++) {
            start[i] = startEnd[i][0];
            end[i] = startEnd[i][1];
        }
        Arrays.sort(start);
        Arrays.sort(end);
        int host = 0;
        int endIndex = 0;
        for (int startIndex = 0; startIndex < n; startIndex++) {
            if (start[startIndex] < end[endIndex]) {
                host++;
            } else {
                endIndex++;
            }
        }
        return host;
    }
}

全部评论

相关推荐

牛客10001:G了+1,被前端/客户端给捞起来了,不太想面
投递美团等公司7个岗位 美团求职进展汇总
点赞 评论 收藏
分享
昨天 13:14
已编辑
中山大学 算法工程师
牛客849740264号:友友,要不要看看我们这里的算法岗?现在是急招岗,最后3天截至,欢迎来试一试呀
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务