0
0
DSA Pythonprogramming~20 mins

Merge Overlapping Intervals in DSA Python - Practice Problems & Challenges

Choose your learning style9 modes available
Challenge - 5 Problems
🎖️
Merge Overlapping Intervals Master
Get all challenges correct to earn this badge!
Test your skills under time pressure!
Predict Output
intermediate
2: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))
A[[1, 6], [8, 18]]
B[[1, 6], [8, 10], [15, 18]]
C[[1, 3], [2, 6], [8, 10], [15, 18]]
D[[1, 10], [15, 18]]
Attempts:
2 left
💡 Hint
Remember to sort intervals by their start time before merging.
Predict Output
intermediate
2: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))
A[[1, 7], [8, 9]]
B[[1, 5], [3, 7], [8, 9]]
C[[1, 10]]
D[[1, 9]]
Attempts:
2 left
💡 Hint
All intervals overlap inside the first interval.
🔧 Debug
advanced
2: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))
A[[1, 5]]
BIndexError
CTypeError
D[[1, 4], [4, 5]]
Attempts:
2 left
💡 Hint
Check the condition for merging intervals that touch at edges.
Predict Output
advanced
2: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))
A[[1, 10]]
B[[1, 3], [4, 5], [6, 7], [8, 9]]
C[[1, 5], [6, 7], [8, 9]]
D[[1, 7], [8, 9]]
Attempts:
2 left
💡 Hint
Nested intervals inside a bigger interval merge into it.
Predict Output
expert
3: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))
A[[1, 7], [8, 10], [15, 20]]
B[[1, 6], [5, 7], [8, 10], [15, 20]]
C[[1, 3], [2, 6], [5, 7], [8, 10], [15, 18], [17, 20]]
D[[1, 7], [8, 10], [15, 18], [17, 20]]
Attempts:
2 left
💡 Hint
Duplicates and overlapping intervals merge into one.