2054. Two Best Non Overlapping Events (Medium) - TengnanYao/daily_leetcode GitHub Wiki

class Solution:
    def maxTwoEvents(self, events: List[List[int]]) -> int:
        events.sort(key = lambda x : x[1])
        ends, endsMax = [0], [0]
        result = 0
        for start, end, val in events:
            if val > endsMax[-1]:
                ends.append(end)
                endsMax.append(max(val, endsMax[-1]))
            i = bisect_left(ends, start)
            result = max(result, val + endsMax[i - 1])
        return result