leetcode

Unnamed repository; edit this file 'description' to name the repository.
Log | Files | Refs | README

commit 9fa4140dfba7b609151b5fd99c4ae7a0f65ae42f
parent a42fd11f30666f5f8e5a69a0fa10c23489402f2e
Author: Andrew Laack <andrew@laack.co>
Date:   Thu, 10 Jul 2025 23:09:58 -0500

Completed merge intervals

Diffstat:
Amerge-intervals/merge-intervalsV1.py | 33+++++++++++++++++++++++++++++++++
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])]