Skip to content

DP Non-Overlapping Intervals

Table of Contents

2830. Maximize the Profit as the Salesman

  • LeetCode | 力扣

  • Tags: Array, Hash Table, Binary Search, Dynamic Programming, Sorting

2008. Maximum Earnings From Taxi

  • LeetCode | 力扣

  • Tags: Array, Hash Table, Binary Search, Dynamic Programming, Sorting

2054. Two Best Non-Overlapping Events

  • LeetCode | 力扣

  • Tags: Array, Binary Search, Dynamic Programming, Sorting, Heap Priority Queue

from bisect import bisect_left
from typing import List


class maxTwoEvents:
    @staticmethod
    def binary_search(events: List[List[int]]) -> int:
        events.sort(key=lambda x: x[1])
        stack = [(0, 0)]
        res = 0

        for start, end, val in events:
            i = bisect_left(stack, (start,)) - 1
            res = max(res, stack[i][1] + val)

            if val > stack[-1][1]:
                stack.append((end, val))

        return res


if __name__ == "__main__":
    events = [[1, 3, 2], [4, 5, 2], [2, 4, 3]]
    assert maxTwoEvents.binary_search(events) == 4

1235. Maximum Profit in Job Scheduling

  • LeetCode | 力扣

  • Tags: Array, Binary Search, Dynamic Programming, Sorting

1751. Maximum Number of Events That Can Be Attended II

  • LeetCode | 力扣

  • Tags: Array, Binary Search, Dynamic Programming, Sorting

3414. Maximum Score of Non-overlapping Intervals

  • LeetCode | 力扣

  • Tags: Array, Binary Search, Dynamic Programming, Sorting