news 2026/7/2 0:24:25

leetcode 2054(排序 + 单调栈,通用做法是 DP)

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
leetcode 2054(排序 + 单调栈,通用做法是 DP)

2054: 两个最好的不重叠活动

题意:在结束时间小于 startTime 的活动中,选择价值最大的活动。

为了方便查找,先把 events 按照结束时间从小到大排序。

排序后,对比如下两个活动:

  • 活动一:结束于 3 时刻,价值 999。
  • 活动二:结束于 6 时刻,价值 9。

活动二的结束时间又晚,价值又小,全方面不如活动一,是垃圾数据,直接忽略。

换句话说,在遍历 events 的过程中(注意 events 已按照结束时间排序),只在遇到更大价值的活动时,才记录该活动。把这些活动记录到一个栈(列表)中,那么从栈底到栈顶,结束时间是递增的,价值也是递增的,非常适合二分查找

枚举第二个活动,在单调栈中二分查找结束时间严格小于 startTime 的最后一个活动,即为价值最大的第一个活动。如果没找到,那么只能选一个活动。

为了简化判断逻辑,可以在栈底加一个结束时间为 0,价值也为 0 的哨兵。

ranges::sort(events,{},[](auto& e){return e[1];});

vector<pair<int,int>> st={{0,0}}; //栈底哨兵
auto it=--ranges::lower_bound(st,start_time,{},&pair<int,int>::first); ans=max(ans,it->second+value);

单调栈递增,如果找不到,因为有“栈底哨兵”,因此找不到满足条件的活动时,it={0,0},it->second=0,不会越界。

class Solution { public: int maxTwoEvents(vector<vector<int>>& events) { //按照结束时间升序排序 ranges::sort(events,{},[](auto& e){return e[1];}); //从栈底到栈顶,结束时间递增,价值递增 vector<pair<int,int>> st={{0,0}}; //栈底哨兵 int ans=0; for(auto& e:events){ int start_time=e[0],value=e[2]; //二分查找最后一个结束时间 < start_time 的活动 auto it=--ranges::lower_bound(st,start_time,{},&pair<int,int>::first); ans=max(ans,it->second+value); if(value>st.back().second) st.emplace_back(e[1],value); } return ans; } };
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/6/26 15:28:58

Aspera传输相比FTP有哪些显著优势?

在日常工作和跨国协作中&#xff0c;大规模数据传输是许多企业与团队面临的关键挑战。传统的FTP&#xff08;文件传输协议&#xff09;长期以来被广泛使用&#xff0c;但随着数据量的爆发式增长及对传输效率要求的提升&#xff0c;其局限性日益凸显。IBM Aspera作为高速传输技术…

作者头像 李华
网站建设 2026/6/26 15:27:36

学校想做云桌面的话需要注意什么?

在数字化转型的浪潮中&#xff0c;云桌面凭借灵活访问、集中管理、数据安全等优势&#xff0c;正成为政府、医疗、金融、能源等行业信息化建设的重要方向。然而&#xff0c;构建云桌面体系并非简单的设备上云&#xff0c;其中涉及架构设计、技术选型、安全合规、运维管理等多重…

作者头像 李华
网站建设 2026/7/2 1:53:24

数字孪生技术驱动现代水利智能创新建设

2023年&#xff0c;广东北江流域通过数字孪生平台精准预演洪峰轨迹&#xff0c;提前72小时启动分洪预案&#xff0c;避免经济损失超10亿元&#xff1b;2024年&#xff0c;某水利利用数字孪生引擎模拟村落淹没场景&#xff0c;为人员转移提供分钟级决策支持……这些案例背后&…

作者头像 李华
网站建设 2026/7/1 2:09:43

特征值类重大升级

这个 特征值主信息类 std::variant 载体方案&#xff0c;在保持原有架构优势的同时&#xff0c;成功实现了值语义、内嵌存储、高性能访问、易序列化&#xff0c;而且完全兼容全局唯一、去重、共享、融合、索引等核心能力。 是一次成功的架构升级。 为什么这次彻底没问题了&…

作者头像 李华
网站建设 2026/7/2 1:02:09

【MyBatis】MyBatis操作动态sql MyBatisGenerator

文章目录mybatis进阶&#xff08;动态sql&#xff09;一、<if>标签二、<trim>标签三、<where>标签四、<set>标签五、<foreach>标签六、<include>标签MyBatisGenerator1. 引入插件2. 添加 generatorConfig.xml 并修改3. 生成文件mybatis进阶…

作者头像 李华
网站建设 2026/7/2 0:50:25

期末考试4

文章目录一、基础概念1.什么是方法的重写&#xff1f;2.什么是接口&#xff1f;3.什么是抽象类&#xff1f;什么是抽象方法&#xff1f;4.常见异常类及继承关系5.常用API类整理&#xff08;表格&#xff09;6.集合整理&#xff08;List&#xff0c;ArrayList&#xff0c;Linked…

作者头像 李华