leetcode/57-240605-pass/main.py

82 lines
2.3 KiB
Python
Raw Normal View History

2024-06-05 23:14:39 +02:00
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))