diff --git a/merge-intervals/jamiebase.py b/merge-intervals/jamiebase.py new file mode 100644 index 000000000..6486469db --- /dev/null +++ b/merge-intervals/jamiebase.py @@ -0,0 +1,33 @@ +""" +# Approach +1. 현재 범위 & 비교 범위 변수 +2. 비교 범위의 start가 현재 범위의 end보다 같거나 작으면 merge 가능 +3. 최종 merge 범위를 현재 범위로 재갱신 & output 배열에 추가하는 방식 + +# Complexity +- Time complexity: intervals의 길이를 N, 정렬 때문에 O(N log N) +- Space complexity: output 배열이 최악의 경우 O(N) +""" + + +class Solution: + def merge(self, intervals: list[list[int]]) -> list[list[int]]: + if (n := len(intervals)) == 1: + return intervals + + intervals.sort(key=lambda x: x[0]) + output = [] + right = 1 + start, end = intervals[0] + + while right < n: + comp_start, comp_end = intervals[right] + if comp_start <= end: + end = max(comp_end, end) + else: + output.append([start, end]) + start, end = comp_start, comp_end + right += 1 + + output.append([start, end]) + return output diff --git a/missing-number/jamiebase.py b/missing-number/jamiebase.py new file mode 100644 index 000000000..8b6189901 --- /dev/null +++ b/missing-number/jamiebase.py @@ -0,0 +1,17 @@ +""" +# Approach +nums 집합을 만들어 없는 숫자를 찾습니다. + +# Complexity +- Time complexity: nums 의 길이를 n이라고 할 때, O(n) +- Space complexity: O(n) +""" + + +class Solution: + def missingNumber(self, nums: list[int]) -> int: + nums_set = set(nums) + n = len(nums) + for i in range(0, n + 1): + if i not in nums_set: + return i