小学生都能看懂的题解 | #主持人调度(二)#

问题解释

想象你有一堆活动,每个活动都有开始时间和结束时间。你需要为每个活动找一个主持人,但是同一个主持人在同一时间只能主持一个活动。我们想知道最少需要多少个主持人才能把所有活动都举办好。

解决方案步骤

  1. 活动排序:首先,我们把所有活动按照开始时间从早到晚排列,这样就能更方便地检查每个活动。
  2. 使用堆:我们用一个“优先队列”(可以想象成一个可以随时添加和删除的箱子),这个箱子里放的是正在进行的活动的结束时间。箱子里总是保持结束时间最早的活动在最上面。
  3. 检查每个活动
    • 对于每个活动,如果这个活动的开始时间大于或等于最上面的结束时间,说明这个活动可以用这个主持人,所以我们就把这个主持人(最上面的结束时间)拿掉,然后把当前活动的结束时间放进去。
    • 如果当前活动的开始时间小于最上面的结束时间,说明需要一个新主持人,所以我们把当前活动的结束时间也放进箱子里。
  4. 最后结果:箱子里的活动结束时间的数量就是我们需要的主持人数。

代码解释

import java.util.Arrays;
import java.util.Comparator;
import java.util.PriorityQueue;

public class MinimumHostCount {
    public int minHostCount(int n, int[][] intervals) {
        if (n == 0) return 0; // 如果没有活动,返回0

        // 按开始时间排序活动
        Arrays.sort(intervals, Comparator.comparingInt(a -> a[0]));

        // 创建一个最小堆,存储活动的结束时间
        PriorityQueue<Integer> minHeap = new PriorityQueue<>();

        for (int[] interval : intervals) {
            // 如果堆不为空且当前活动的开始时间 >= 堆顶的结束时间
            if (!minHeap.isEmpty() && interval[0] >= minHeap.peek()) {
                minHeap.poll(); // 移除堆顶的结束时间(复用主持人)
            }
            // 将当前活动的结束时间放入堆中
            minHeap.offer(interval[1]);
        }

        return minHeap.size(); // 返回堆的大小,代表需要的主持人数
    }

    
}

代码简要

  • minHostCount 方法:这个方法用来计算需要多少个主持人。
  • Arrays.sort:把活动按开始时间排好,方便后面处理。
  • PriorityQueue:这个箱子用来管理结束时间。我们可以随时把结束时间放进去或拿出来。
  • if 判断:检查当前活动是否可以使用之前的主持人,如果可以,就把它拿掉;否则就加一个新主持人。

希望这篇文章对你有帮助👍。

#牛客创作赏金赛##题解#
小学生都能看懂的算法 文章被收录于专栏

主要面向小白的算法文章。以小学生都能看懂为目标而编写,顺便巩固下自己。

全部评论

相关推荐

深信服系统测试校招面试经验主要包括以下几个方面:‌面试流程:‌面试一般分为一面和二面。‌一面主要涉及自我介绍、‌项目经历深挖、‌对岗位的了解及个人优势阐述;‌二面则可能更侧重于技术问题和项目经验的探讨‌。‌面试内容:‌技术问题涵盖广泛,‌包括基础概念(‌如HTTP/HTTPS的区别、‌多线程的TCP服务器等)‌、‌编程语言(‌如Python的认识、‌进程与线程的区别等)‌、‌计算机网络(‌如TCP/IP协议、‌DNS协议等)‌以及测试相关的专业知识(‌如测试用例的设计、‌自动化测试框架等)‌‌。‌面试难度:‌整体而言,‌面试难度适中,‌但仍需充分准备,‌特别是对项目经验和相关技术的深入理解‌。‌深信服科技25届校招-全球精英人才计划正式启动!【内推码】NTA5MRI【领跑X计划项目介绍】该项目旨在寻找全球高校顶尖人才,为每位顶尖人才提供量身定制的职业发展和技能提升计划,不断为深信服人才队伍输入高素质、高技能、高潜力的精英人才,为深信服在网络安全、云计算、AI领域的长期发展提供坚实的人才支持。温馨提醒:此项目与秋招提前批、正式批不冲突,相当于秋招有2次投递深信服岗位的机会!【关于我们】中国卓越雇主、A股上市公司,云计算、网络安全万亿赛道总部位于深圳,全球8000+名员工,业务覆盖全球50多个国家和地区,拥有海内外超10w家政府、教育、医疗、知名互联网企业等客户。【热招岗位】🙋研发类(工作城市:深圳、北京、长沙、南京、成都,80%在深圳)&nbsp;&nbsp;-&nbsp;开发岗:C/C++、Python、Go、Java软件开发工程师&nbsp;&nbsp;-&nbsp;人工智能岗:AI工程师、AI技术专家(应届博士)🙋市场类(工作地点:全国大中城市)&nbsp;&nbsp;-&nbsp;客户经理(不限专业,均可投递)&nbsp;&nbsp;-&nbsp;售前产品经理(仅限理工科)【6月起发放正式offer,7月份有机会参与线下实习/见习】研发类薪资:SP&nbsp;offer&nbsp;本科35w+起、硕士40w+起!博士薪资:80-130万!市场类薪资:本科20-28万/年起(20万不包括奖金,只包括工资和补助)、硕士22-32万/年(22万不包括奖金,只包括工资和补助)【福利】过年13天假期,包三餐,每月理发按摩,每年1-2次调薪机会,应届生1个月免费酒店住宿,各大节日礼盒,父母节关怀......移动端:关注公众号【深信服招聘】—校园招聘—25届领跑X计划—选择对应岗位【内推码】NTA5MRI【内推链接】https://app.mokahr.com/m/recommendation-apply/sangfor/5369?sharePageId=3755022&amp;recommendCode=NTA5MRI&amp;codeType=1#/recommendation/page/3755022使用内推码简历优先筛选,有任何问题包括进度查询可以私信我,内推后在评论区留言【姓名缩写+岗位】,方便捞人和确认投递状态
深信服科技
|
校招
|
超多精选岗位
点赞 评论 收藏
分享
不愿透露姓名的神秘牛友
11-03 09:37
美团 后端 30 硕士985
点赞 评论 收藏
分享
点赞 收藏 评论
分享
牛客网
牛客企业服务