diff --git a/57-240605-pass/main.py b/57-240605-pass/main.py new file mode 100644 index 0000000..dabc9c3 --- /dev/null +++ b/57-240605-pass/main.py @@ -0,0 +1,81 @@ +class Solution: + def insert(self, intervals: list[list[int]], newInterval: list[int]) -> list[list[int]]: + l = newInterval[0] + r = newInterval[1] + if r < intervals[0][0]: + intervals.insert(0, newInterval) + return intervals + if l > intervals[-1][1]: + intervals.append(newInterval) + return intervals + nl = 0 + nl_f = False + nl_ff = False + nr = len(intervals) + nr_f = False + nr_ff = False + for ind, interval in enumerate(intervals): + left = interval[0] + right = interval[1] + if l >= left and l <= right: + nl_f = True + nl = ind + if r >= left and r <= right: + nr_f = True + nr = ind + 1 + + if nl_f == False: + for i in range(1, len(intervals)): + if l > intervals[i - 1][1] and l < intervals[i][0]: + nl = i + nl_ff = True + break + + if nr_f == False: + for i in range(1, len(intervals)): + if r > intervals[i - 1][1] and r < intervals[i][0]: + nr = i + nr_ff = True + break + + print(nl, nr, nl_f, nr_f) + + rlt = [] + for i in range(nl): + rlt.append(intervals[i]) + nl_l = intervals[nl][0] + if nl_f == False: + nl_l = l + if nr_ff == True or nr_f == True: + nr = nr - 1 + nr_r = intervals[nr][1] + nr = nr + 1 + + if nr_f == False: + nr_r = r + + rlt.append([nl_l, nr_r]) + + print(rlt) + for i in range(nr, len(intervals)): + rlt.append(intervals[i]) + return rlt + +intervals = [[1,3], [6,9]] +newInterval = [2,5] +sol = Solution() +print(sol.insert(intervals=intervals, newInterval=newInterval)) +intervals = [[1,2], [3,5], [6,7], [8,10],[12, 16]] +newInterval = [4, 8] +print(sol.insert(intervals=intervals, newInterval=newInterval)) + +intervals = [[1,2], [3,5], [6,7], [8,10],[12, 16]] +newInterval = [0, 16] +print(sol.insert(intervals=intervals, newInterval=newInterval)) +print() +intervals = [[1,5]] +newInterval = [6, 18] +print(sol.insert(intervals=intervals, newInterval=newInterval)) + + +