Skip to content

Commit ec32e00

Browse files
committed
- Merge Intervals DaleStudy#278
1 parent 62fab02 commit ec32e00

File tree

1 file changed

+29
-0
lines changed

1 file changed

+29
-0
lines changed

merge-intervals/ayosecu.py

Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,29 @@
1+
from typing import List
2+
3+
class Solution:
4+
"""
5+
- Time complexity: O(nlogn), n = len(intervals)
6+
- Space Complexity: O(1), If output variable excluded.
7+
"""
8+
def merge(self, intervals: List[List[int]]) -> List[List[int]]:
9+
result = []
10+
intervals.sort(key=lambda x: x[0])
11+
12+
for interval in intervals:
13+
if not result or result[-1][1] < interval[0]:
14+
result.append(interval)
15+
else:
16+
result[-1][1] = max(result[-1][1], interval[1])
17+
18+
return result
19+
20+
21+
tc = [
22+
([[1, 3], [2, 6], [8, 10], [15, 18]], [[1, 6], [8, 10], [15, 18]]),
23+
([[1, 4], [4, 5]], [[1, 5]])
24+
]
25+
26+
solution = Solution()
27+
for i, (intervals, e) in enumerate(tc, 1):
28+
r = solution.merge(intervals)
29+
print(f"TC {i} is Passed!" if r == e else f"TC 1 is Failed! - Expected: {e}, Result: {r}")

0 commit comments

Comments
 (0)