56. Merge Intervals
Given an array of intervals where intervals[i] = [starti, endi], merge all overlapping intervals, and return an array of the non-overlapping intervals that cover all the intervals in the input
Example 1:
- Input:
intervals = [[1,3],[2,6],[8,10],[15,18]] - Output:
[[1,6],[8,10],[15,18]] - Explanation: Since
intervals [1,3]and[2,6]overlap, merge them into[1,6].
Example 2:
- Input:
intervals = [[1,4],[4,5]] - Output:
[[1,5]] - Explanation: Intervals
[1,4]and[4,5]are considered overlapping.
Example 3:
- Input:
intervals = [[4,7],[1,4]] - Output:
[[1,7]] - Explanation: Intervals
[1,4]and[4,7]are considered overlapping.
Constraints:
1 <= intervals.length <= 10^4intervals[i].length == 20 <= starti <= endi <= 10^4
Solution
class Solution:
def merge(self, intervals: list[list[int]]) -> list[list[int]]:
intervals.sort(key=lambda x: x[0])
result = []
for start, end in intervals:
if result and start <= result[-1][1]:
result[-1][1] = max(result[-1][1], end)
else:
result.append([start, end])
return result