Challenge - 5 Problems
Merge Overlapping Intervals Master
Get all challenges correct to earn this badge!
Test your skills under time pressure!
❓ Predict Output
intermediate2:00remaining
Output of merging intervals with partial overlaps
What is the output of the following code that merges overlapping intervals?
DSA Python
def merge_intervals(intervals): intervals.sort(key=lambda x: x[0]) merged = [] for interval in intervals: if not merged or merged[-1][1] < interval[0]: merged.append(interval) else: merged[-1][1] = max(merged[-1][1], interval[1]) return merged intervals = [[1,3],[2,6],[8,10],[15,18]] print(merge_intervals(intervals))
Attempts:
2 left
💡 Hint
Remember to sort intervals by their start time before merging.
✗ Incorrect
The code sorts intervals by start time. It merges [1,3] and [2,6] into [1,6]. The others remain separate.
❓ Predict Output
intermediate2:00remaining
Output when intervals are fully overlapping
What is the output of this code merging fully overlapping intervals?
DSA Python
def merge_intervals(intervals): intervals.sort(key=lambda x: x[0]) merged = [] for interval in intervals: if not merged or merged[-1][1] < interval[0]: merged.append(interval) else: merged[-1][1] = max(merged[-1][1], interval[1]) return merged intervals = [[1,10],[2,5],[3,7],[8,9]] print(merge_intervals(intervals))
Attempts:
2 left
💡 Hint
All intervals overlap inside the first interval.
✗ Incorrect
All intervals overlap within [1,10], so they merge into one big interval.
🔧 Debug
advanced2:00remaining
Identify the error in merging intervals code
What error does this code produce when merging intervals?
DSA Python
def merge_intervals(intervals): intervals.sort(key=lambda x: x[0]) merged = [] for interval in intervals: if not merged or merged[-1][1] <= interval[0]: merged.append(interval) else: merged[-1][1] = max(merged[-1][1], interval[1]) return merged intervals = [[1,4],[4,5]] print(merge_intervals(intervals))
Attempts:
2 left
💡 Hint
Check the condition for merging intervals that touch at edges.
✗ Incorrect
The condition uses <= which treats touching intervals as non-overlapping, so they remain separate.
❓ Predict Output
advanced2:00remaining
Output of merging intervals with nested intervals
What is the output of this code merging nested intervals?
DSA Python
def merge_intervals(intervals): intervals.sort(key=lambda x: x[0]) merged = [] for interval in intervals: if not merged or merged[-1][1] < interval[0]: merged.append(interval) else: merged[-1][1] = max(merged[-1][1], interval[1]) return merged intervals = [[1,10],[2,3],[4,5],[6,7],[8,9]] print(merge_intervals(intervals))
Attempts:
2 left
💡 Hint
Nested intervals inside a bigger interval merge into it.
✗ Incorrect
All smaller intervals are inside [1,10], so they merge into one big interval.
❓ Predict Output
expert3:00remaining
Output of merging intervals with unsorted input and duplicates
What is the output of this code merging intervals with duplicates and unsorted input?
DSA Python
def merge_intervals(intervals): intervals.sort(key=lambda x: x[0]) merged = [] for interval in intervals: if not merged or merged[-1][1] < interval[0]: merged.append(interval) else: merged[-1][1] = max(merged[-1][1], interval[1]) return merged intervals = [[5,7],[1,3],[2,6],[8,10],[1,3],[15,18],[17,20]] print(merge_intervals(intervals))
Attempts:
2 left
💡 Hint
Duplicates and overlapping intervals merge into one.
✗ Incorrect
Intervals [1,3], [2,6], [5,7], and duplicate [1,3] merge into [1,7]. Intervals [15,18] and [17,20] merge into [15,20].