https://leetcode.com/problems/two-best-non-overlapping-events
2054. Two Best Non-Overlapping Events
給你一個陣列表示活動 events[i] = [startTimei, endTimei, valuei],你最多
可以參加兩個活動,活動持續期間不可參加其他活動,求出最多可以獲得的value。
思路:
1.先把陣列按照活動結束時間排序。
2.每次參加活動i的時候就往前去找一個活動 j 滿足
events[j].endtime < events[i].startTime
因為有單調性所以可以用二分搜索。
3.前面的活動要用一個陣列保存最大的value讓二分搜索保持單調性:
[1,2,3,4] [1,2] [1,2,3,4,5] => [1,2,3,4] [4,4] [4,4,4,4,5]
所以我們只要找滿足條件的最右活動即可
Java code: