扬州网站seowordpress添加留言
2026/1/5 22:06:35 网站建设 项目流程
扬州网站seo,wordpress添加留言,杭州营销网站建设平台,山亭网站建设【LetMeFly】2054.两个最好的不重叠活动#xff1a;二分查找 力扣题目链接#xff1a;https://leetcode.cn/problems/two-best-non-overlapping-events/ 给你一个下标从 0 开始的二维整数数组 events #xff0c;其中 events[i] [startTimei, endTimei, valuei] 。第 i 个…【LetMeFly】2054.两个最好的不重叠活动二分查找力扣题目链接https://leetcode.cn/problems/two-best-non-overlapping-events/给你一个下标从0开始的二维整数数组events其中events[i] [startTimei, endTimei, valuei]。第i个活动开始于startTimei结束于endTimei如果你参加这个活动那么你可以得到价值valuei。你最多可以参加两个时间不重叠活动使得它们的价值之和最大。请你返回价值之和的最大值。注意活动的开始时间和结束时间是包括在活动时间内的也就是说你不能参加两个活动且它们之一的开始时间等于另一个活动的结束时间。更具体的如果你参加一个活动且结束时间为t那么下一个活动必须在t 1或之后的时间开始。示例 1:输入events [[1,3,2],[4,5,2],[2,4,3]]输出4解释选择绿色的活动 0 和 1 价值之和为 2 2 4 。示例 2输入events [[1,3,2],[4,5,2],[1,5,5]]输出5解释选择活动 2 价值和为 5 。示例 3输入events [[1,5,3],[1,5,1],[6,6,5]]输出8解释选择活动 0 和 2 价值之和为 3 5 8 。提示2 events.length 105events[i].length 31 startTimei endTimei 1091 valuei 106解题方法二分查找如果只能选一个event那么好说哪个价值大选哪个如果一定要选两个event假设第二个event选事件e那么第一个event一定要选结束时间早于e开始时间的所有事件中价值最大的那个。很显然为了枚举第一个event的可选范围可以以结束时间为依据对所有event按从小到大排个序。接着使用一个有序数组maxValue数组中存放的内容是到xx时刻为止单个event的最大价值是多少。排序依据是结束时间。遍历所有事件对于某事件e二分查找maxValue中小于e开始时间中最大的那个其值加上e的价值即为第二个event选e情况下的最优解。之后更新e结束时间的单个事件最大值。时间复杂度O ( n log ⁡ n ) O(n\log n)O(nlogn)其中n l e n ( e v e n t s ) nlen(events)nlen(events)空间复杂度O ( n ) O(n)O(n)AC代码C/* * LastEditTime: 2025-12-23 18:58:01 */classSolution{public:intmaxTwoEvents(vectorvectorintevents){sort(events.begin(),events.end(),[](constvectorinta,constvectorintb){returna[1]b[1];});vectorpairint,intmaxValue;intsingleMax0,pairMax0;for(vectorinte:events){vectorpairint,int::iterator itlower_bound(maxValue.begin(),maxValue.end(),e[0],[](constpairint,intp,intvalue){returnp.firstvalue;});if(it!maxValue.begin()){pairMaxmax(pairMax,(--it)-seconde[2]);}singleMaxmax(singleMax,e[2]);maxValue.push_back({e[1],singleMax});}returnmax(pairMax,singleMax);}};同步发文于CSDN和我的个人博客原创不易转载经作者同意后请附上原文链接哦~千篇源码题解已开源

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询