text: """
  986
  interval list intersections
  medium
  
  You are given two lists of closed intervals, firstList and secondList,
   where firstList[i] = [starti, endi] and secondList[j] = [startj, endj].
   Each list of intervals is pairwise disjoint and in sorted order.
  
  Return the intersection of these two interval lists.
  
  A closed interval [a, b] (with a < b) denotes the set of real numbers
   x with a <= x <= b.
  
  The intersection of two closed intervals is a set of real numbers
  that are either empty or represented as a closed interval.
   For example, the intersection of [1, 3] and [2, 4] is [2, 3].
  """
  
  from typing import List
  
  
  class Solution:
      def intervalIntersection(self, firstList: List[List[int]], secondList: List[List[int]]) -> List[List[int]]:
  
          i = j = 0
          inter = []
          while i < len(firstList) and j < len(secondList):
  
              left = max(firstList[i][0], secondList[j][0])
              right = min(firstList[i][1], secondList[j][1])
              if left <= right:
                  inter.append([left, right])
              if firstList[i][1] > secondList[j][1]:
                  j += 1
              elif firstList[i][1] < secondList[j][1]:
                  i += 1
              else:
                  i += 1
                  j += 1
  
          return inter
  
  
  sol = Solution()
  
  firstList = [[1,3],[5,9]]
  secondList = []
  
  print(sol.intervalIntersection(firstList,secondList))
  
  
  
  
  
  
  
  
  
  
  
  
  