news 2026/9/2 23:26:29

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/9/3 0:08:43

【Linux命令大全】001.文件管理之gitview命令(实操篇)

【Linux命令大全】001.文件管理之gitview命令&#xff08;实操篇&#xff09; ✨ 本文为Linux系统gitview命令的全面讲解与实战指南&#xff0c;帮助您通过图形界面可视化查看Git仓库历史与分支&#xff0c;提升版本控制效率。 (关注不迷路哈&#xff01;&#xff01;&#xff…

作者头像 李华
网站建设 2026/9/2 23:05:28

人工智能之数字生命--最新工程进展及下一步计划

HY-Ego 开源库github 项目目前处于工程测试版的早期阶段&#xff0c;已基本实现的核心链路是&#xff1a;从相机&#xff08;D455 深度相机&#xff09;获取实时数据 → 点云分割与存在提取&#xff08;识别场景中的“存在”实体&#xff09; → 三维场景管理 → 实时线程化显示…

作者头像 李华
网站建设 2026/9/1 16:53:25

python基于flaskWeb的超市员工供应采购管理系统_dlhtj29a_Pycharm vue django

目录已开发项目效果实现截图开发技术路线相关技术介绍核心代码参考示例结论源码lw获取/同行可拿货,招校园代理 &#xff1a;文章底部获取博主联系方式&#xff01;已开发项目效果实现截图 同行可拿货,招校园代理 python基于flaskWeb的超市员工供应采购管理系统_dlhtj29a_Pyc…

作者头像 李华
网站建设 2026/9/2 0:59:18

python基于flask的环保垃圾分类管理系统设计与实现_48139lru_Pycharm vue django

目录已开发项目效果实现截图开发技术路线相关技术介绍核心代码参考示例结论源码lw获取/同行可拿货,招校园代理 &#xff1a;文章底部获取博主联系方式&#xff01;已开发项目效果实现截图 同行可拿货,招校园代理 python基于flask的环保垃圾分类管理系统设计与实现_48139lru_…

作者头像 李华
网站建设 2026/8/31 15:40:39

波形优化抗干扰】 捷变频,捷变PRT抗干扰 发射信号及接收滤波器联合优化的抗干扰(ISRJ)

波形优化抗干扰】 捷变频&#xff0c;捷变PRT抗干扰 发射信号及接收滤波器联合优化的抗干扰(ISRJ)雷达系统最怕啥&#xff1f;不是敌方导弹&#xff0c;而是各种花式干扰。现代战场电磁环境复杂得跟菜市场似的&#xff0c;搞不好你的雷达屏幕就变成雪花电视。今天咱们扒拉几个硬…

作者头像 李华