commit 9fa4140dfba7b609151b5fd99c4ae7a0f65ae42f
parent a42fd11f30666f5f8e5a69a0fa10c23489402f2e
Author: Andrew Laack <andrew@laack.co>
Date: Thu, 10 Jul 2025 23:09:58 -0500
Completed merge intervals
Diffstat:
1 file changed, 33 insertions(+), 0 deletions(-)
diff --git a/merge-intervals/merge-intervalsV1.py b/merge-intervals/merge-intervalsV1.py
@@ -0,0 +1,33 @@
+# idea:
+
+# sort
+# go from left to right, merging when applicable in new array
+
+# TC: O(nlogn)
+
+class Solution:
+ def merge(self, intervals: List[List[int]]) -> List[List[int]]:
+
+ intervals.sort()
+ merged = []
+
+ for i in range(0, len(intervals)):
+
+ current = intervals[i]
+ if len(intervals) - 1 != i and overlapping(intervals[i], intervals[i+1]):
+ current = merge(intervals[i], intervals[i+1])
+
+ if merged and overlapping(merged[-1], current):
+ merged[-1] = merge(merged[-1], current)
+ else:
+ merged.append(current)
+
+ return merged
+
+# int1[0] <= int2[0]
+def overlapping(int1, int2):
+ if int1[1] >= int2[0]:
+ return True
+
+def merge(int1, int2):
+ return [min(int1[0], int2[0]), max(int1[1], int2[1])]