1353. 最多可以参加的会议数目(贪心算法)

leetcode1353. 最多可以参加的会议数目(贪心算法) 给你一个数组 events,其中 events[i] = [startDayi, endDayi] ,表示会议 i 开始于 startDayi ,结束于 endDayi 。 你可以在满足 startDayi <= d <= endDayi 中的任意一天 d 参加会议 i 。注意,一天只能参加一个会议。 请你返回你可以参加的 最大 会议数目。 代码 class Solution { public int maxEvents(int[][] events) { Arrays 阅读详情
package com.heu.wsq.leetcode.interval;

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

/**
 * 1353. 最多可以参加的会议数目
 * @author wsq
 * @date 2021/4/20
 * 给你一个数组 events,其中 events[i] = [startDayi, endDayi] ,表示会议 i 开始于 startDayi ,结束于 endDayi 。
 * 你可以在满足 startDayi <= d <= endDayi 中的任意一天 d 参加会议 i 。注意,一天只能参加一个会议。
 * 请你返回你可以参加的 最大 会议数目。
 *
 * 示例 1:
 * 输入:events = [[1,2],[2,3],[3,4]]
 * 输出:3
 * 解释:你可以参加所有的三个会议。
 * 安排会议的一种方案如上图。
 * 第 1 天参加第一个会议。
 * 第 2 天参加第二个会议。
 * 第 3 天参加第三个会议。
 *
 * 链接:https://leetcode-cn.com/problems/maximum-number-of-events-that-can-be-attended
 */
public class MaxEvents {
    /**
     * 贪心算法,由于每天只能参加一个会议,因此尽可能的将快结束的会议参加了
     * 使用优先队列来获取目前会议中最早结束的那个
     * @param events
     * @return
     */
    public int maxEvents(int[][] events){
        int n = events.length;
        // 按照events开始时间升序排列
        Arrays.sort(events, new Comparator<int[]>(){
            public int compare(int[] o1, int[] o2){
                return o1[0] - o2[0];
            }
        });
        // 我们要想参加更多的会议,需要把那些提前结束的会议给完成
        // 贪心的思想
        PriorityQueue<Integer> pq = new PriorityQueue<>();
        int i = 0;
        int day = 1;
        int ans = 0;
        while (i < n || !pq.isEmpty()){
            // 添加截止到当天能参加的会议,,当时间的开始时间为当天,即可将当天安排到日程
            // 算法挺有意思
            while (i < n && events[i][0] == day){
                pq.offer(events[i][1]);
                i++;
            }

            // 清除已经截止的会议
            while (!pq.isEmpty() && pq.peek() < day){
                pq.poll();
            }

            // 一天只能参加一场会议将结束时间最早的安排
            if (!pq.isEmpty()){
                pq.poll();
                ans++;
            }
            day++;
        }
        return ans;
    }
}

贪心算法简述及例题 贪心算法 阅读详情

相关推荐

基于Transformer和图卷积网络的时空人体运动预测网络

本文主要介绍了基于Transformer和图卷积网络的时空人体运动预测网络。首先,文章详细阐述了Transformer模型的原理和优点,指出其通过自注意力机制实现序列数据的建模和处理,能够捕捉长距离依赖关系。然后,文章介绍了图卷积网络的基本概念和应用场景,强调其通过邻居节点信息聚合实现空间特征的提取和融合。接着,文章详细设计了时空人体运动预测网络的总体架构,包括基于Transformer的时间特征提取模块、基于图卷积的空间特征融合模块以及时空特征联合预测模块。

babyai996的博客 1479

【LeetCode 1353. 最多可以参加的会议数目 (Java版本)】

LeetCode 1353 Java 最小堆解法

d007letian的博客 520

判断两个多边形是否相交(java实现)

判断两个多边形是否相交 ,当前认为一个点相交也是相交,可针对凹多边形和凸边型等多复杂的多边形进行相交判断,采用java实现,因为网上java实现的比较少,所以这里写下如何实现,适用于碰撞检测,地图等等应用场景

IT_CREATE的博客 5843

最多可以参加的会议数目--贪心算法

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

jump_into_zehe的博客 1569

Cadence公司的数字IC设计工具:综合工具(Genus)——(2)

介绍Cadence公司的数字IC设计工具Genus

qq_42922513的博客 1943

SAP 配额修改 + 修改记录写入实现

采购配额修改并写入修改记录 cdhdr 和 cdpos

GAVIN 1095

牛客NC392 参加会议的最大数目【中等 贪心+小顶堆 Java/Go/PHP 力扣1353】

【代码】牛客NC392 参加会议的最大数目【中等 贪心+小顶堆 Java/Go/PHP 力扣1353】

weixin_37991016的博客 543

YOLOv8 改进有效涨点专栏目录 | 含卷积、主干、注意力机制、Neck、检测头、损失函数、二次创新C2PSA/C3k2等各种网络结构改进

YOLOv8在目标检测领域的地位与优势模型改进的意义与价值本专栏的特色与创新点读者学习路径建议关键改进点回顾不同场景的模型选型建议开源社区资源汇总持续学习路径指南YOLOv8在目标检测领域的地位与优势模型改进的意义与价值本专栏的特色与创新点读者学习路径建议关键改进点回顾不同场景的模型选型建议开源社区资源汇总持续学习路径指南。

weixin_39818775的博客 1072

Leetcode 1353:最多可以参加的会议数目(超详细的解法!!!)

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

coordinate的博客 2819

【ArcGIS Engine二次开发】入门基础(2):ArcGIS开发方式(VBA、DLL、Add-in、Engine)对比

文章目录2.1 使用VBA进行桌面软件开发2.1.1 VBA开发方式2.1.1 VBA代码的安全性2.2 使用DLL进行桌面软件开发2.2.1 DLL开发方式2.2.2 DLL功能的应用部署2.3 使用Add-in进行桌面软件开发2.4 使用ArcGIS Engine构建独立应用程序 对于桌面GIS应用来说,ArcGIS平台不仅提供了用于开发独立运行的GIS应用软件的二次开发工包ArcGIS Engine,还提供了对ArcGIS Deskop桌面软件进行扩展的开发的话,在开发个具体的GIS 行业应用软件时

智慧空间实验室 6507

SAP 与 Palantir 合作全景解析:这不是普通集成,而是把 ERP、数据语义层、云迁移与企业级 AI 串成一条价值链

SAP与Palantir的战略合作聚焦企业数字化转型核心痛点,通过深度技术整合构建"数据-决策-执行"闭环。合作包含四大主线:云迁移连续性保障、SAP业务数据云与Palantir平台对接、联合工程开发、高监管行业优先落地。技术实现上采用SAP认证插件,支持双向数据交互和实时业务动作触发。该合作突破了传统ERP系统局限,将业务语义与AI执行相结合,特别适合制造业供应链优化、财务争议处理等高价值场景,为企业在云迁移过程中实现业务连续性与智能化升级提供新范式。

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 192

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

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

grllery的博客 446

AgentScope Java 入门:Spring AI Alibaba 与 AgentScope 的定位与区别

摘要:Spring AI Alibaba是阿里基于Spring AI开发的本地化AI应用框架,旨在服务Java开发者。它提供模型接入、函数调用、RAG等功能,并与阿里云基础设施深度集成。同时,阿里开源了多智能体框架AgentScope,其Java版(AgentScope-Java)专注于Agentic设计理念。两者将协同发展:Spring AI Alibaba侧重Spring生态集成,AgentScope-Java强化智能体能力。未来计划包括支持AgentScope、升级Admin平台,以及推进Server

SmartSi 1522

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

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

Beyond的个人博客 737

efm32 入门.pdf

本PDF共计22页,介绍的是操作驱动API,下载与否自己斟酌。

Statistics and Machine Learning Toolbox

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

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

这是一个典型的区间调度问题(Interval Scheduling)变种。传统区间调度问题通常是给定固定的开始时间和结束时间,你只能参加非重叠的会议,目的是选择最多数量的互不重叠区间。因此,本题的难点在于如何合理安排参加会议的时间,才能让会议数量最大化。:该方案在某些会议时间重叠的情况下无法灵活安排,可能无法达到最大数量。虽然第一个和第四个会议时间段重叠,但可以分配不同天参加,从而全部参加。请返回你可以参加的最大会议数目。,参加第 i 个会议。,表示第 i 个会议从第。全部参加,会议数量最大。

Lucy_wzw的博客 712

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

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

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

qq_24210431的博客 497

VC中sqlite的使用

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

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

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

北歌的博客 1112

LeetCode 1353. 最多可以参加的会议数目(贪心)

题目链接:https://leetcode-cn.com/problems/maximum-number-of-events-that-can-be-attended/ 这道题其实有好多类似的题,都是优先去找最左边的区间,又优先去挑选最右边的端点。所以对于这道题来说,如果现在是第idx天,那么最优的选的肯定是会议结束时间离idx最近的会议,大致思路就是这样,接下来会一点一点的...

Charles_Zaqdt的博客 809

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

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

Michael是个半路程序员 4297

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

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

qq_27060423的博客 985

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

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

自由小兵儿 490

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

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

OceanStar的博客 548

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

https://leetcode-cn.com/problems/maximum-number-of-events-that-can-be-attended/ 如果在一天中只有一个会议,那么选择这个会议。 为了参加更多的会议,不浪费每一天,遍历每一天。 如果一天中有同时两个会议开始,那么也要选一个,不选白不选(贪心),至于选择哪个更优,选择截止时间近的,因为其他截止时间更长的会议有...

wwj_bupt 262

力扣(LeetCode)每日随机一题——1353.最多可以参加的会议数目[中等]

贪心+优先队列模拟

Kim-Hyunyeon的博客 561

力扣 1353. 最多可以参加的会议数目两法--遍历贪心与剪枝优化

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

xiangguang_fight的博客 529
上一篇: 28. 实现 strStr(KMP算法,公共子串的位置)
下一篇: 1897 · 会议室 3(区间判重和最大重叠区间问题)
Lazy mode
博客等级 码龄10年 13粉丝 311原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值