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