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

主持人调度(二)

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

  1. 关键在于 hosts 根据时间排序不同,max 的取值大有不同。所以可以确认最大主持人数
  2. 还有一个比较令人尴尬的是,List 的数组泛型在日常开发中不多见,也是让人难受的。
import java.util.*;

public class Solution {
    public int minmumNumberOfHost(int n, int[][] startEnd) {
        // 用一个list存储所有的事件,开始时间为+1,结束时间为-1
        List<int[]> events = new ArrayList<>();
        for (int[] interval : startEnd) {
            events.add(new int[]{interval[0], 1});  // 活动开始
            events.add(new int[]{interval[1], -1}); // 活动结束
        }
        
        // 按时间排序:时间相同的情况下,先处理结束事件
        // events.sort((a, b) -> a[0] == b[0] ? a[1] - b[1] : a[0] - b[0]);
        events.sort((a,b)->{
            if(a[0]!=b[0]){
                return Integer.compare(a[0],b[0]);
            } else {
                return Integer.compare(a[1],b[1]);
            }
        });

        int hosts = 0;
        int maxHosts = 0;
        for (int[] event : events) {
            hosts += event[1];          // 加上当前事件的主持人增减情况
            maxHosts = Math.max(maxHosts, hosts); // 更新最大主持人数量
        }
        
        return maxHosts;
    }
}

全部评论

相关推荐

点赞 收藏 评论
分享
牛客网
牛客企业服务