米哈游笔试最大公告数讨论

24号笔试那题最大公告数,我用了队列但是0AC,各位牛友帮我瞅瞅问题在哪
public int minMeetingRooms(int[][] intervals) {
 
    if(intervals.length==0) return 0;
    Arrays.sort(intervals, (a,b)->a[0]-b[0]);
    PriorityQueue<Integer> q = new PriorityQueue<>();
    int max=1;
    for(int[] in:intervals){
        while(q.size()>0&&in[0]>=q.peek()){
            q.poll();
        }
        q.offer(in[1]);
        max=Math.max(max, q.size());
    }
    return max;
}


#米哈游笔试##米哈游##笔试题目#
全部评论
我90%。应该是根据结束时间来排序,然后双层循环判断区间冲突,最后结果加1。
点赞 回复 分享
发布于 2020-04-24 20:15
把区间离散化放到差分数组求前缀和就100%了,你这个优先队列的,我没看懂(我c++。。
点赞 回复 分享
发布于 2020-04-24 20:55
哪位大佬有第二题AC代码分享学习一下
点赞 回复 分享
发布于 2020-04-24 22:29
会不会是因为数组排序的时候还需要将结束时间当作第二优先级排序啊?假设这样一种情况: 4 1    8 1    5 1    2 3    6 答案应该是3,但是你的代码可能是4……?
点赞 回复 分享
发布于 2020-04-24 22:59
我的想法很简单,就是每行数组倒序和下一行数组(不倒序)中第一个元素进行比较
点赞 回复 分享
发布于 2020-04-25 18:10
我感觉下面这个博客的方法应该可以吧,思路就是先构建一个对象,该对象里面有两个属性,一个属性是val,一个属性是type,type代表是区间头还是区间尾。然后对使用Arrays.sort进行排序。排序后遍历数组,如果遇到type==0的就将count加一同时和max值做比较,如果为type==1就将count减1。最后得到max值就是我们要求的 https://blog.csdn.net/zsy112371/article/details/105791277
点赞 回复 分享
发布于 2020-04-27 15:32

相关推荐

点赞 评论 收藏
分享
牛客154160166号:9月底还给我发短信,好奇怪,我24届的
点赞 评论 收藏
分享
点赞 5 评论
分享
牛客网
牛客企业服务