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

主持人调度(二)

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

全部评论

相关推荐

06-23 17:45
门头沟学院 Java
里面的项目啥的真的有用吗?&nbsp;这些人是割韭菜吗?
HellowordX:很简单,如果你有自己稳定的学习路线和获取知识的方式就没必要,如果你啥都不懂的小白或者里边有你感兴趣的知识,我觉得挺值,我也经常为知识付费,因为时间精力有限,很多东西我不可能自己重复造轮子
点赞 评论 收藏
分享
不愿透露姓名的神秘牛友
06-27 15:07
点赞 评论 收藏
分享
仁者伍敌:难怪小公司那么挑剔,让你们这些大佬把位置拿了
点赞 评论 收藏
分享
06-02 15:53
阳光学院 Java
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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