Leetcode 1028 Solution

This article provides solution to leetcode question 1028 (interval-list-intersections).

https://leetcode.com/problems/interval-list-intersections

Solution

# Definition for an interval.
# class Interval(object):
#     def __init__(self, s=0, e=0):
#         self.start = s
#         self.end = e

class Solution(object):
    def intervalIntersection(self, A, B):
        """
        :type A: List[Interval]
        :type B: List[Interval]
        :rtype: List[Interval]
        """
        heap = []
        for a in A + B:
            heapq.heappush(heap, (a.start, -1))
            heapq.heappush(heap, (a.end, 1))

        l = sys.maxsize
        cur = 0
        ans = []
        while heap:
            i, v = heapq.heappop(heap)
            cur += v

            if cur == -2:
                l = i
            else:
                if l > i:
                    continue

                ans.append((l, i))
                l = sys.maxsize

        return ans