题解 | #主持人调度(二)# 贪心+排序+TreeMap

主持人调度(二)

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

import java.util.*;


public class Solution {
    /**
     * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
     *
     * 计算成功举办活动需要多少名主持人
     * @param n int整型 有n个活动
     * @param startEnd int整型二维数组 startEnd[i][0]用于表示第i个活动的开始时间,startEnd[i][1]表示第i个活动的结束时间
     * @return int整型
     */
    public int minmumNumberOfHost (int n, int[][] startEnd) {
        // write code here
        // 记录主持人的结束时间,因为需要考虑到多个主持人结束时间相同,不能使用Set-->Map
        TreeMap<Integer,Integer> map = new TreeMap<>();
        // sort by startTime
        // 如果用a[0]-b[0],当正数减负数(2147483646,-2147483648)会溢出
        // 即Arrays.sort(startEnd,(a,b)->a[0]-b[0]);会排序错误
        // 需要用compare
        Arrays.sort(startEnd,(a,b)->Integer.compare(a[0],b[0]));
        // check
        // System.out.println(Arrays.deepToString(startEnd));
        for(int i=0;i<n;i++){
            int start = startEnd[i][0],end = startEnd[i][1];
            // 找到一个在start时刻前空闲的主持人
            // floor是找到小于或等于键值的最大值
            Map.Entry<Integer,Integer> entry= map.floorEntry(start);
            if(entry!=null){
                if(entry.getValue()==1){
                    map.remove(entry.getKey());
                }else{
                    map.put(entry.getKey(),entry.getValue()-1);
                }
            }
            map.put(end,map.getOrDefault(end,0)+1);
        }
        int res = 0;
        for(Map.Entry<Integer,Integer> entry:map.entrySet()){
            res += entry.getValue();
        }
        return res;
    }
}

input :10,[[2147483646,2147483647],[-2147483648,-2147483647],[2147483646,2147483647],[-2147483648,-2147483647],[2147483646,2147483647],[-2147483648,-2147483647],[2147483646,2147483647],[-2147483648,-2147483647],[2147483646,2147483647],[-2147483648,-2147483647]]

output: 5

踩坑点:如果不使用Arrays.sort(startEnd,(a,b)->Integer.compare(a[0],b[0]));对活动开始时间排序,而使用a[0]-b[0],以上样例,当正数减负数(2147483646,-2147483648,)会溢出,使得排序结果错误,output 10

#算法笔记#
全部评论

相关推荐

不愿透露姓名的神秘牛友
10-05 10:13
已编辑
HHHHaos:让这些老登来现在秋招一下,简历都过不去
点赞 评论 收藏
分享
10-13 17:47
门头沟学院 Java
wulala.god:图一那个善我面过,老板网上找的题库面的
点赞 评论 收藏
分享
点赞 收藏 评论
分享
牛客网
牛客企业服务