news 2026/4/18 9:53:18

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/4/18 3:30:20

少走99%的弯路!2大高频痛点,飞算AI一键修复器秒搞定

Java开发路上&#xff0c;总有两类高频痛点让开发者苦不堪言&#xff1a;复杂环境下的编译错误排查耗心耗力&#xff0c;代码安全漏洞修复又常因框架适配问题反复踩坑。不少开发者为这些问题熬夜加班&#xff0c;反复调试却收效甚微。而飞算JavaAI一键修复器的出现&#xff0c;…

作者头像 李华
网站建设 2026/4/18 3:29:34

如何用这个浏览器插件一天建联100个有效dy达人

姐妹们&#xff01;做达人分销是不是总遇到这些崩溃瞬间&#xff1a;发100条私信99条已读不回&#xff1f;样品寄出去就石沉大海&#xff1f;合作一次就再也约不动&#xff1f; 今天把压箱底的4个实战技巧分享给你们 加达人高通过率话术 &#x1f534; 3秒破冰公式&#xff1…

作者头像 李华
网站建设 2026/4/18 3:28:17

AI健康智能体开放平台:解锁健康管理数字化转型的钥匙

近年来&#xff0c;全民健康意识的持续提升与科技的飞速发展&#xff0c;推动健康管理领域迈入深刻的数字化转型阶段。传统健康管理模式长期受困于数据碎片化、服务同质化、响应效率低等痛点&#xff0c;分散的体检数据、穿戴设备数据难以整合利用&#xff0c;通用化的健康方案…

作者头像 李华
网站建设 2026/4/18 5:24:25

python基于hive的歌曲筛选音乐推荐系统_iv0e65d5_Pycharm vue django

目录 已开发项目效果实现截图开发技术路线相关技术介绍核心代码参考示例结论源码lw获取/同行可拿货,招校园代理 &#xff1a;文章底部获取博主联系方式&#xff01; 已开发项目效果实现截图 同行可拿货,招校园代理 python基于hive的歌曲筛选音乐推荐系统_iv0e65d5_Pycharm v…

作者头像 李华
网站建设 2026/4/17 9:30:02

OpenAI最新发布,企业级AI智能体的强化微调实践

在2025年QCon AI NYC大会上&#xff0c;OpenAI的Will Hang和Wenjie Zi共同呈现了一场关于企业级AI智能体优化的深度分享。他们重点介绍了Agent RFT&#xff08;强化微调&#xff09;这一创新方法&#xff0c;这是一种专门为工具使用型AI智能体设计的强化学习微调技术&#xff0…

作者头像 李华