From 3ac5e0665180466595eb6c8db3c531e4853bb2fd Mon Sep 17 00:00:00 2001 From: SamTheKorean Date: Wed, 24 Jul 2024 14:24:34 -0400 Subject: [PATCH 1/6] solve : insert interval --- insert-interval/samthekorean.py | 26 ++++++++++++++++++++++++++ 1 file changed, 26 insertions(+) create mode 100644 insert-interval/samthekorean.py diff --git a/insert-interval/samthekorean.py b/insert-interval/samthekorean.py new file mode 100644 index 000000000..cf4226661 --- /dev/null +++ b/insert-interval/samthekorean.py @@ -0,0 +1,26 @@ +# TC : O(n + m) +# SC : O(n + m) +# n is a size of intervals and m is a size of newInterval +class Solution: + def insert( + self, intervals: List[List[int]], newInterval: List[int] + ) -> List[List[int]]: + result = [] + i = 0 + + while i < len(intervals) and intervals[i][1] < newInterval[0]: + result.append(intervals[i]) + i += 1 + + while i < len(intervals) and intervals[i][0] <= newInterval[1]: + newInterval[0] = min(newInterval[0], intervals[i][0]) + newInterval[1] = max(newInterval[1], intervals[i][1]) + i += 1 + + result.append(newInterval) + + while i < len(intervals): + result.append(intervals[i]) + i += 1 + + return result From 5ea3072e4cc2c3d349626b260d3ed9de9d7e7f9d Mon Sep 17 00:00:00 2001 From: SamTheKorean Date: Thu, 25 Jul 2024 22:44:09 -0400 Subject: [PATCH 2/6] solve : merge interval --- merge-intervals/samthekorean.py | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) create mode 100644 merge-intervals/samthekorean.py diff --git a/merge-intervals/samthekorean.py b/merge-intervals/samthekorean.py new file mode 100644 index 000000000..6fe0e53fe --- /dev/null +++ b/merge-intervals/samthekorean.py @@ -0,0 +1,19 @@ +# TC : O(nlog n) +# SC : O(n) +class Solution: + def merge(self, intervals: List[List[int]]) -> List[List[int]]: + merged = [] + intervals.sort(key=lambda x: x[0]) + + prev = intervals[0] + + for interval in intervals[1:]: + if interval[0] <= prev[1]: + prev[1] = max(prev[1], interval[1]) + else: + merged.append(prev) + prev = interval + + merged.append(prev) + + return merged From 8d2e6dcc2a25db74e6dd13892df9ba7ac04c5859 Mon Sep 17 00:00:00 2001 From: SamTheKorean Date: Fri, 26 Jul 2024 15:39:15 -0400 Subject: [PATCH 3/6] solve : non overlapping intervals --- non-overlapping-intervals/samthekorean.py | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) create mode 100644 non-overlapping-intervals/samthekorean.py diff --git a/non-overlapping-intervals/samthekorean.py b/non-overlapping-intervals/samthekorean.py new file mode 100644 index 000000000..3469ce6e0 --- /dev/null +++ b/non-overlapping-intervals/samthekorean.py @@ -0,0 +1,16 @@ +# TC : O(n log n) +# SC : O(n) +class Solution: + def eraseOverlapIntervals(self, intervals: List[List[int]]) -> int: + res = 0 + + intervals.sort(key=lambda x: x[1]) + prev_end = intervals[0][1] + + for i in range(1, len(intervals)): + if prev_end > intervals[i][0]: + res += 1 + else: + prev_end = intervals[i][1] + + return res From fffbaa9214320f5f2f3e9730a94f31c73b13d9a5 Mon Sep 17 00:00:00 2001 From: SamTheKorean Date: Sat, 27 Jul 2024 10:43:20 -0400 Subject: [PATCH 4/6] solve : meeting rooms ii --- meeting-rooms-ii/samthekorean.py | 12 ++++++++++++ 1 file changed, 12 insertions(+) create mode 100644 meeting-rooms-ii/samthekorean.py diff --git a/meeting-rooms-ii/samthekorean.py b/meeting-rooms-ii/samthekorean.py new file mode 100644 index 000000000..d7c9303b4 --- /dev/null +++ b/meeting-rooms-ii/samthekorean.py @@ -0,0 +1,12 @@ +class Solution: + def minMeetingRooms(self, intervals: List[List[int]]) -> int: + pairs = [] + for start, end in intervals: + pairs += [(start, 1), (end, -1)] + pairs.sort() + + max_cnt, cnt = 0, 0 + for pair in pairs: + cnt += pair[1] + max_cnt = max(cnt, max_cnt) + return max_cnt From 2e7229f01a5d99692f94acdd0956da9bd9c28a68 Mon Sep 17 00:00:00 2001 From: SamTheKorean Date: Sun, 28 Jul 2024 00:40:47 -0400 Subject: [PATCH 5/6] fix : add time and space complexity --- meeting-rooms-ii/samthekorean.py | 2 ++ 1 file changed, 2 insertions(+) diff --git a/meeting-rooms-ii/samthekorean.py b/meeting-rooms-ii/samthekorean.py index d7c9303b4..20a8868be 100644 --- a/meeting-rooms-ii/samthekorean.py +++ b/meeting-rooms-ii/samthekorean.py @@ -1,3 +1,5 @@ +# TS : O(n log n) +# SC : O(n) class Solution: def minMeetingRooms(self, intervals: List[List[int]]) -> int: pairs = [] From d24538bd2f0f61613d8c8ebff0ebf7d8475de8f5 Mon Sep 17 00:00:00 2001 From: SamTheKorean Date: Sun, 28 Jul 2024 01:54:08 -0400 Subject: [PATCH 6/6] solve : rotate image --- rotate-image/samthekorean.py | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) create mode 100644 rotate-image/samthekorean.py diff --git a/rotate-image/samthekorean.py b/rotate-image/samthekorean.py new file mode 100644 index 000000000..04e8833ec --- /dev/null +++ b/rotate-image/samthekorean.py @@ -0,0 +1,16 @@ +# TC : O(n^2) +# SC : O(1) +class Solution: + def rotate(self, matrix: List[List[int]]) -> None: + top, bottom = 0, len(matrix) - 1 + + while top < bottom: + left, right = top, bottom + for i in range(bottom - top): + topLeft = matrix[top][left + i] + matrix[top][left + i] = matrix[bottom - i][left] + matrix[bottom - i][left] = matrix[bottom][right - i] + matrix[bottom][right - i] = matrix[top + i][right] + matrix[top + i][right] = topLeft + + top, bottom = top + 1, bottom - 1