Merging Intervals: A Detailed Walkthrough
Let's get our hands dirty by stepping through the actual code to merge the given list of intervals: [[1, 4], [2, 5], [7, 10], [12, 16]]
.
Preparing the Ground: Initial Sort and Setup
Before jumping into merging, we sort our intervals by their start times.
1intervals = [[1, 4], [2, 5], [7, 10], [12, 16]]
2intervals.sort(key=lambda x: x[0])
Also, initialize an empty array called result
to store the merged intervals.
1result = []
Step 1: Seed the result
Array
We start by taking the first interval [1, 4]
from our sorted array and appending it to result
.
1result.append(intervals[0])
At this point, result = [[1, 4]]
.
Step 2: Enter the Loop: First Iteration
Now, we loop through the remaining intervals in the sorted array, starting with [2, 5]
.
1current = [2, 5]
2last = result[-1] # [1, 4]
Here, last
is [1, 4]
, and current
is [2, 5]
. We notice that current[0] <= last[1]
, which indicates an overlap. So, we extend last
to cover current
.
1if current[0] <= last[1]:
2 last[1] = max(current[1], last[1]) # max(5, 4) = 5
After this step, result = [[1, 5]]
.
Step 3: Second Iteration
Next, we consider the interval [7, 10]
.
1current = [7, 10]
2last = result[-1] # [1, 5]
Here, current[0] > last[1]
, meaning there's a gap. So, we simply append current
to result
.
1result.append(current)
Now, result = [[1, 5], [7, 10]]
.
Step 4: Final Iterations
We repeat the above steps for [12, 16]
. Since it doesn't overlap with the last interval [7, 10]
, we add it to the result as is.
1result.append([12, 16])
Our final result
array becomes [[1, 5], [7, 10], [12, 16]]
.
And there you have it! We've successfully merged the intervals using Python code. This step-by-step walkthrough should give you a detailed understanding of how interval merging works in practice.
