leetcode

Leetcode submissions
git clone git://git.laack.co/leetcode.git
Log | Files | Refs | README

insert-intervalV1.py (1446B)


      1 # what the hell is even that?
      2 
      3 
      4 class Solution:
      5     def insert(
      6         self, intervals: List[List[int]], newInterval: List[int]
      7     ) -> List[List[int]]:
      8 
      9         ret_ls = []
     10 
     11         if intervals == []:
     12             ret_ls.append(newInterval)
     13             return ret_ls
     14 
     15         # left
     16         ending_at = -1
     17         for i in range(0, len(intervals)):
     18             if intervals[i][1] >= newInterval[0]:
     19                 ending_at = i
     20                 break
     21             else:
     22                 ret_ls.append(intervals[i])
     23 
     24         upper = len(intervals)
     25 
     26         # mid_interval
     27         if ending_at != -1:
     28             lower_bound = min(intervals[ending_at][0], newInterval[0])
     29             upper = ending_at
     30             while upper < len(intervals) and intervals[upper][1] < newInterval[1]:
     31                 upper += 1
     32 
     33             if upper == len(intervals):
     34                 ret_ls.append([lower_bound, max(intervals[-1][1], newInterval[1])])
     35                 return ret_ls
     36 
     37             if upper != len(intervals) and newInterval[1] < intervals[upper][0]:
     38                 ret_ls.append([lower_bound, newInterval[1]])
     39                 upper -= 1
     40             else:
     41                 ret_ls.append([lower_bound, intervals[upper][1]])
     42 
     43         # upper interval
     44         for i in range(upper + 1, len(intervals)):
     45             ret_ls.append(intervals[i])
     46 
     47         if newInterval[0] > intervals[-1][1]:
     48             ret_ls.append(newInterval)
     49 
     50         return ret_ls