1353. 最多可以参加的会议数目

【C++算法】【动态规划】1751最多可以参加的会议数目 给你一个 events 数组,其中 events[i] = [startDayi, endDayi, valuei] ,表示第 i 个会议在 startDayi 天开始,第 endDayi 天结束,如果你参加这个会议,你能得到价值 valuei 。同时给你一个整数 k 表示你能参加的最多会议数目。 你同一时间只能参加一个会议。如果你选择参加某个会议,那么你必须 完整 地参加完这个会议。会议结束日期是包含在会议内的,也就是说你不能同时参加一个开始日期与另一个结束日期相同的两个会议。 请你返回能得到的会议价值 阅读详情

1.题目

在这里插入图片描述在这里插入图片描述

2.解法

1、先按照startDay进行排序,得到开始时间从早到晚的数组排列。
2、接着将startDay相等的会议加入优先队列,弹出结束时间最早的会议。相同时间,结束时间最早的会议优先出列。

class Solution {
    public int maxEvents(int[][] events) {
        // 按照开始时间对元素排序
        Arrays.sort(events, new Comparator<int[]>(){
            @Override
            public int compare(int[] a, int[] b) {
                return a[0] - b[0];
            }
        });

        PriorityQueue<Integer> queue = new PriorityQueue<>();
        int day = 0, id = 0, n = events.length, res = 0;

        while (id < n || !queue.isEmpty()) {
            if (queue.isEmpty()) {
                // day是由第一个值决定的
                queue.add(events[id][1]);
                day = events[id++][0];
            }
            // 将dayday中否合要求的值添加进去
            while (id < n && events[id][0] <= day) {
                queue.add(events[id++][1]);
            }

            // 否合要求,day和res都会++,既然最大值都大于等于day,那么第一个元素就可以poll
            // day++,是因为一天只能参加1场会议
            if (queue.peek() >= day) {
                day++;
                res++;
                
            }
            // 不符合要求的元素要poll出去,要不循环结束不了
            queue.poll();
        }
        return res;
    }
}

每次一个结束时间仅进出堆一次,加上堆排序的时间和维护堆的时间,时间复杂度为O(nlogn),空间复杂度为O(n)
优先队列由堆来实现。

自助结账商品检测(Scanned Item Detection)——基于YOLOv8的RPC数据集实战 RPC数据集是由中国科学院自动化研究所发布的零售商品结账检测公开数据集,广泛用于自助结账和零售场景下的目标检测与识别。YOLOv8是YOLO系列最新版本,由Ultralytics推出,继承了YOLO家族的高效快速和高准确性,适用于实时检测场景。本文系统介绍了基于YOLOv8的RPC数据集自助结账商品检测方案,涵盖数据准备、训练、推理及UI界面设计。未来,可结合多模态感知、RFID融合技术,打造更加智能和稳定的自助结账系统。 阅读详情

相关推荐

告别“单打独斗”:Oh My Open Code 如何用多模型协作重塑 AI 编程范式

介绍"Oh My OpenCode"——一个能协调多个专业AI模型完成复杂开发任务的智能编程框架。您将看到它如何分配任务、发挥不同模型的独特优势,并通过并行处理和实时纠错等功能解决AI编程流程中的常见痛点。

老孙 | Ethan Sun 的博客:AI 智能体与 AI 原生软件的工程实践 4214

leetcode 1353. 最多可以参加的会议数目(C++)

给你一个数组events,其中events[i] = [startDayi, endDayi],表示会议i开始于startDayi,结束于endDayi。 你可以在满足startDayi<= d <= endDayi中的任意一天d参加会议i。注意,一天只能参加一个会议。 请你返回你可以参加的最大会议数目。 示例 1: 输入:eve...

qq_27060423的博客 986

运算放大器电路仿真实践:从零实现完整示例

通过一个完整的运算放大器电路仿真示例,深入掌握电路仿真的关键步骤与技巧,帮助电子爱好者和工程师快速上手实际项目设计。

weixin_34725745的博客 1320

LeetCode 1353. 最多可以参加的会议数目(排序+贪心,优先队列,难)

1. 题目 给你一个数组 events,其中 events[i] = [startDayi, endDayi] ,表示会议 i 开始于 startDayi ,结束于 endDayi 。 你可以在满足 startDayi <= d <= endDayi 中的任意一天 d 参加会议 i 。注意,一天只能参加一个会议。 请你返回你可以参加的 最大 会议数目。 示例1: 输入:events ...

Michael是个半路程序员 4302

华中科技大学头歌 交通灯系统设计 Lojisim 详细实验报告,实验图,仅供参考

本实验也是参考了许多大神的做法,也是小白一个!有完整实验代码,实验报告,答辩PPT(ppt当时做得仓促,有点拉胯)~ 需要请评论或私QQ:3096524043(有偿~~) 一、数码管驱动 由真值表生成电路 二、四位无符号比较器设计 三、8位无符号比较器设计 四、一位2路选择器设计 五、八位2路选择器设计 六、BCD双向计数器状态机设计 七、BCD双向计数器输出函数设计 ...

FindXY的博客 1万+

从VoLTE高清通话到5G新通话:手把手带你用Wireshark抓包分析QCI 1, 2, 5, 9的建立与切换过程

本文详细解析了从VoLTE高清通话到5G新通话的QCI(QoS Class Identifier)建立与切换过程,通过Wireshark抓包实战演示如何分析QCI 1、2、5、9的承载机制。内容涵盖QCI基础概念、实验环境搭建、VoLTE通话建立过程分析以及5G新通话中的QoS演进,为网络工程师和通信技术爱好者提供实用的技术指南和优化建议。

weixin_30788619的博客 343

【二分查找】【二分向量】1751 最多可以参加的会议数目 II

给你一个 events 数组,其中 events[i] = [startDayi, endDayi, valuei] ,表示第 i 个会议在 startDayi 天开始,第 endDayi 天结束,如果你参加这个会议,你能得到价值 valuei 。同时给你一个整数 k 表示你能参加的最多会议数目。 你同一时间只能参加一个会议。如果你选择参加某个会议,那么你必须 完整 地参加完这个会议。会议结束日期是包含在会议内的,也就是说你不能同时参加一个开始日期与另一个结束日期相同的两个会议。 请你返回能得到的会议价值

闻缺陷则喜何志丹 1409

2023年第二十届五一数学建模竞赛C题:“双碳”目标下低碳建筑研究-思路详解与代码答案

2023年第二十届五一数学建模竞赛C题:“双碳”目标下低碳建筑研究-思路详解与代码答案

lichensun的博客 1万+

力扣 最多可以参加的会议数目

第一天可以参加二维数组中 events[0] [] , [1, 2] 这个活动。1.对于活动结束时间为 105次方来说,算法的时间复杂度过高了,执行时间过长。第二天可以参加二维数组中 events[2] [] ,[1,2] 这个活动。思路:按照结束时间先后去参加,先结束的先参加。第三天可以参加 [2, 3]第四天可以参加 [3,4]

m0_61417342的博客 323

蚂蚁区块链第20课 可信存证司法链从入门到实施

1. 摘要 杭州互联网法院和司法区块链平台的技术建设方都是蚂蚁金服区块链。那么,如何借助蚂蚁的技术能力和服务能力,快速对接上司法链,便于后续打通存证/维权的闭环流程。本文介绍蚂蚁区块链可信存证的业务及特点,费用及接入方法等,具有实战指导意义。 2. 蚂蚁区块链可信存证的介绍 蚂蚁区块链可信存证具备全链路可信,司法权威节点见证,安全隐私保护,一站式接入能力,全国首家法律认可的区块链存证平台。 2...

辉哥的技术投资路 6089

Qt/C++编写自定义控件42-开关按钮

一、前言 从2010年进入互联网+智能手机时代以来,各种各样的APP大行其道,手机上面的APP有很多流行的元素,开关按钮个人非常喜欢,手机QQ、360卫士、金山毒霸等,都有很多开关控制一些操作,在Qt widgets应用项目上,在项目中应用些类似的开关按钮,估计也会为项目增添不少新鲜感。 总结了大部分的开关按钮控件,基本上有两大类,第一类是纯代码绘制,这种对代码的掌控度要求比较高,但是灵活性比较好...

Qt/C++视频监控/推流/物联网/大屏系统/自定义控件/UI定制/输入法 3331

LeetCode 1353: 最多可以参加的会议数目 | 题解:从朴素贪心到并查集优化

本文介绍了LeetCode 1353题"最多可以参加的会议数目"的两种解法。核心贪心策略是优先安排结束时间早的会议。朴素解法通过排序和线性查找可用日期实现,时间复杂度O(N·D)。优化解法利用并查集快速定位可用日期,将时间复杂度降至O(N log N)。并查集通过路径压缩和合并操作,高效管理日期占用状态,完美解决了线性查找的性能瓶颈。两种解法空间复杂度均为O(D)。

m0_52225681的博客 1242

华为用自研的MetaERP替换全球顶级的SAP ERP系统,其难度与风险远超一次普通的技术升级,它是一场战略级的、涉及业务筋骨的系统性工程

华为成功用自研MetaERP替换SAP系统,这是一项极具挑战的战略工程。面临四大难度:业务复杂度高(170多国业务)、数据迁移量大(20年历史数据)、技术集成复杂(重构生态系统)、人员适应周期长。同时伴随四大风险:业务中断、数据失真、成本超支、供应链协同问题。华为成功的关键在于:生存压力驱动的战略决心、强大的软件研发能力、以自身业务为试验场、分步实施策略。这一案例证明中国企业能攻克高端软件壁垒,但对大多数企业而言,核心系统替换需谨慎评估风险,建议采用渐进式替代策略。

金牌架构师 535

leetcode 每日一题 1353. 最多可以参加的会议数目

摘要:本文解决LeetCode 1353题,即如何安排参加最多活动的问题。每个活动有开始和结束日期,每天只能参加一个活动。采用贪心算法,优先参加最早结束的活动。使用优先队列动态维护当前可参加的活动,每天处理过期活动并加入新活动,选择最早结束的活动参加。时间复杂度为O(n log n),适用于大规模数据。示例显示该方法能正确计算最大可参加活动数。

2301_81618761的博客 286

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

力扣1353.最多可以参加的会议数目

【代码】力扣1353.最多可以参加的会议数目。

Pisasama的博客 363

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

【LeetCode 1353. 最多可以参加的会议数目】解析

本文解析了LeetCode 1353题"最多可以参加的会议数目"的贪心解法。通过时间流逝模拟法,每天从当前可参加的会议中选择结束最早的会议参加,最大化参会数量。实现上使用最小堆高效管理候选会议,时间复杂度O(N+DlogN),空间复杂度O(N)。该方法通过每日动态决策,避免了传统排序策略的三大陷阱,展现了贪心算法的精妙之处。

Beyond的个人博客 737

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

LeetCode- 1353.最多可以参加的会议数目

/** 1353.最多可以参加的会议数目 * @author 作者 Your-Name: * @version 创建时间:2020年2月20日 上午10:41:21 * 给你一个数组 events,其中 events[i] = [startDayi, endDayi] ,表示会议 i 开始于 startDayi ,结束于 endDayi 。 你可以在满足 startDayi <= d...

l769440473的博客 591

[按结束时间排序 + 并查集]1353. 最多可以参加的会议数目

【代码】[按结束时间排序 + 并查集]1353. 最多可以参加的会议数目。

m0_46322965的博客 225

LeetCode1353. 最多可以参加的会议数目

给你一个数组 events,其中 events[i] = [startDayi, endDayi] ,表示会议 i 开始于 startDayi ,结束于 endDayi 。你可以在满足 startDayi <= d <= endDayi 中的任意一天 d 参加会议 i 。注意,一天只能参加一个会议。请你返回你可以参加的 最大 会议数目

grllery的博客 447

[LeetCode]1353-最多可以参加的会议数目

问题描述 给你一个数组 events,其中 events[i] = [startDayi, endDayi],表示会议 i 开始于 startDayi ,结束于 endDayi 。 你可以在满足 startDayi <= d <= endDayi 中的任意一天d 参加会议i 。注意,一天只能参加一个会议。 请你返回你可以参加的 最大 会议数目。 示例 输入:events= [[1,2...

自由小兵儿 490

LeetCode 1353 最多可以参加的会议数目

题目链接 题目链接 题意 给你一个数组 events,其中 events[i] = [startDay i , endDay i ] ,表示会议 i 开始于 startDay i ,结束于 endDay i 。 你可以在满足 startDay i <= d <= endDay i 中的任意一天 d 参加会议 i 。注意,一天只能参加一个会议。 请你返回你可以参加的最大会议数目。 思路 贪心 根据结束时间对会议进行排序,然后依次对已经开过会的日期标记即可。 参考代

o11oo11o的博客 224

1353 最多可以参加的会议数目

题目描述: 给你一个数组 events,其中 events[i] = [startDayi, endDayi] ,表示会议 i 开始于 startDayi ,结束于 endDayi 。 你可以在满足 startDayi <= d <= endDayi 中的任意一天 d 参加会议 i 。注意,一天只能参加一个会议。 请你返回你可以参加的 最大 会议数目。 示例 1: 输入:events = [[1,2],[2,3],[3,4]] 输出:3 解释:你可以参加所有的三个会议。 安排会议的一种方案如上

weixin_44171872的博客 248

leetcode 1353. 最多可以参加的会议数目

题目描述: 给你一个数组 events,其中 events[i] = [startDayi, endDayi] ,表示会议 i 开始于 startDayi ,结束于 endDayi 。 你可以在满足 startDayi <= d <= endDayi 中的任意一天 d 参加会议 i 。注意,一天只能参加一个会议。 请你返回你可以参加的 最大 会议数目。 思路: 按照开始时间从小到大排列数组 然后利用最小堆 1、排序 2、然后把开始时间一样的,Push到队列 3、之后把小于当前天数的结束时间pop

peachzy的博客 322

LeetCode-1353.最多可以参加的会议数目 贪心+优先队列

这里是题目描述:LeetCode-1353.最多可以参加的会议数目 贪心+优先队列解法 我们使用贪心原则:在某一天有多个可以参加的会议时,我们选择结束时间最早的来参加。 我们使用优先队列来存储当天可以参加的会议,优先级由会议结束时间来决定,保证可以在O(1)的时间开销内找到结束时间最早的会议并让它出队列,参加会议数+1; 那么,如何确定在某一天,哪些会议是可以参加的?我们事先对存储会议的数组以开始...

qq_24210431的博客 498

leetcode:1353. 最多可以参加的会议数目

(3) 接下来队列里的所有会议都是今天可以去参加的,按道理说,先把[ 早结束的会议] 参加完要好一些,因为像这样,还能在未来的某一天,在其他会议结束再前去参加 [ 后结束的会议]。综上,使用升序的优先队列,队列的值即为会议的结束时间,再此之前根据会议的开始时间进行排序,因为会议是越早开始越好安排。(1) 为了保证能参加最多的会议,所以每一天都尽量选择一个会议参加,首先要在已经开始的会议里面挑选,先把所有开始的会议入队。(2) 检查队列中的会议,若会议结束时间已经超过今天了,则出队,说明已经来不及参加了。

OceanStar的博客 548
上一篇: 字符串的翻转(Java实现)
下一篇: 有效的字母异位词 Leetcode 242(Java实现)
念殊15
博客等级 码龄8年 17粉丝 177原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值