Bird
Raised Fist0
DSA Pythonprogramming~30 mins

Merge Overlapping Intervals in DSA Python - Build from Scratch

Choose your learning style10 modes available
Merge Overlapping Intervals
📖 Scenario: You are organizing a schedule of meetings represented as time intervals. Some meetings overlap, and you want to combine these overlapping meetings into one to avoid conflicts.
🎯 Goal: Build a program that merges overlapping intervals from a list of meeting times.
📋 What You'll Learn
Create a list of intervals with exact values
Create a variable to hold the merged intervals
Write logic to merge overlapping intervals
Print the merged intervals in the specified format
💡 Why This Matters
🌍 Real World
Merging overlapping intervals is useful in calendar apps, booking systems, and resource scheduling to avoid conflicts.
💼 Career
Understanding interval merging helps in software development roles involving scheduling, data processing, and algorithm design.
Progress0 / 4 steps
1
Create the list of intervals
Create a list called intervals with these exact intervals: [1, 3], [2, 6], [8, 10], [15, 18]
DSA Python
Hint

Use a list of lists to represent intervals.

2
Create a list to hold merged intervals
Create an empty list called merged to store the merged intervals
DSA Python
Hint

This list will hold the final merged intervals.

3
Write logic to merge overlapping intervals
Sort the intervals list by the start time using intervals.sort(). Then use a for loop with variable interval to iterate over intervals. Inside the loop, if merged is empty or the end of the last interval in merged is less than the start of interval, append interval to merged. Otherwise, update the end of the last interval in merged to be the maximum of its current end and the end of interval.
DSA Python
Hint

Sorting helps to compare intervals in order. Use merged[-1] to access the last merged interval.

4
Print the merged intervals
Print the merged list to display the merged intervals
DSA Python
Hint

The output should show the merged intervals as a list of lists.

Practice

(1/5)
1. What is the main purpose of merging overlapping intervals in a list of intervals?
easy
A. To remove all intervals that have the same start and end points
B. To sort intervals by their start time only
C. To combine intervals that overlap into a single continuous interval
D. To split intervals into smaller parts

Solution

  1. Step 1: Understand overlapping intervals

    Overlapping intervals share some common range, so merging combines them into one continuous interval.
  2. Step 2: Purpose of merging

    Merging reduces multiple overlapping intervals into fewer intervals without overlaps.
  3. Final Answer:

    To combine intervals that overlap into a single continuous interval -> Option C
  4. Quick Check:

    Merging = Combining overlaps [OK]
Hint: Merging means joining overlapping intervals into one [OK]
Common Mistakes:
  • Thinking merging means sorting only
  • Confusing merging with removing duplicates
  • Assuming intervals are split instead of combined
2. Which of the following Python code snippets correctly sorts a list of intervals by their start time before merging?
easy
A. intervals.sort(key=lambda x: x[0], reverse=True)
B. intervals.sort(key=lambda x: x[0])
C. sorted(intervals)
D. intervals.sort(key=lambda x: x[1])

Solution

  1. Step 1: Identify sorting key for intervals

    We sort intervals by their start time, which is the first element in each interval.
  2. Step 2: Check code correctness

    Using intervals.sort(key=lambda x: x[0]) sorts by start time ascending, which is correct.
  3. Final Answer:

    intervals.sort(key=lambda x: x[0]) -> Option B
  4. Quick Check:

    Sort by start time = key x[0] [OK]
Hint: Sort intervals by first element before merging [OK]
Common Mistakes:
  • Sorting by end time instead of start time
  • Using sorted(intervals) which returns new list without modifying original
  • Sorting in reverse order before merging
3. What is the output of the following Python code?
intervals = [[1,3],[2,6],[8,10],[15,18]]
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])
print(merged)
medium
A. [[1, 6], [8, 10], [15, 18]]
B. [[1, 3], [2, 6], [8, 10], [15, 18]]
C. [[1, 6], [2, 6], [8, 10], [15, 18]]
D. [[1, 3], [8, 10], [15, 18]]

Solution

  1. Step 1: Sort intervals by start time

    Intervals after sorting: [[1,3],[2,6],[8,10],[15,18]] (already sorted)
  2. Step 2: Merge overlapping intervals

    First interval [1,3] added. Next [2,6] overlaps with [1,3], merged to [1,6]. Then [8,10] no overlap, added. Finally [15,18] no overlap, added.
  3. Final Answer:

    [[1, 6], [8, 10], [15, 18]] -> Option A
  4. Quick Check:

    Merged intervals = [[1,6],[8,10],[15,18]] [OK]
Hint: Merge if current start ≤ last merged end [OK]
Common Mistakes:
  • Not updating the end of merged interval
  • Appending intervals without merging
  • Incorrectly sorting intervals
4. Find the error in the following code that attempts to merge overlapping intervals:
def merge_intervals(intervals):
    intervals.sort()
    merged = []
    for i in range(len(intervals)):
        if not merged or merged[-1][1] < intervals[i][0]:
            merged.append(intervals[i])
        else:
            merged[-1][1] = max(merged[-1][1], intervals[i][1])
    return merged

print(merge_intervals([(1,4),(2,3)]))
medium
A. Not checking if intervals list is empty before sorting
B. Sorting intervals without a key may cause incorrect order
C. Using range(len(intervals)) instead of iterating directly over intervals
D. Modifying merged[-1][1] directly causes an error because tuples are immutable

Solution

  1. Step 1: Identify data type of intervals elements

    Intervals are list of tuples like [(1,4),(2,3)], tuples are immutable.
  2. Step 2: Trace the merging process

    After sorting, append first tuple (1,4) to merged. Second overlaps, attempt merged[-1][1] = max(4,3) fails: 'tuple' object does not support item assignment.
  3. Final Answer:

    Modifying merged[-1][1] directly causes an error because tuples are immutable -> Option D
  4. Quick Check:

    Tuples immutable, can't modify [OK]
Hint: Check if intervals are tuples before modifying elements [OK]
Common Mistakes:
  • Assuming all intervals are lists when they might be tuples
  • Ignoring immutability errors
  • Thinking sorting always needs a key
5. Given a list of intervals where some intervals are nested inside others, how would you modify the merge algorithm to handle intervals like [[1,10],[2,5],[6,9],[11,15]] to produce the correct merged output?
hard
A. Sort intervals by start time and merge by extending the end to max of overlapping intervals
B. Sort intervals by end time and merge by extending the start to min of overlapping intervals
C. Remove nested intervals before merging to avoid duplicates
D. Merge only intervals that have exactly the same start or end points

Solution

  1. Step 1: Sort intervals by start time

    Sorting ensures intervals are processed in order, e.g. [[1,10],[2,5],[6,9],[11,15]].
  2. Step 2: Merge by extending end to max of overlapping intervals

    When intervals overlap or are nested, update the end of merged interval to the maximum end value.
  3. Step 3: Result

    Merged intervals become [[1,10],[11,15]] because [2,5] and [6,9] are inside [1,10].
  4. Final Answer:

    Sort intervals by start time and merge by extending the end to max of overlapping intervals -> Option A
  5. Quick Check:

    Sort + max end merge = correct nested handling [OK]
Hint: Always extend merged end to max overlapping end [OK]
Common Mistakes:
  • Sorting by end time instead of start time
  • Removing nested intervals instead of merging
  • Merging only exact matches, missing nested cases
Recommended

Ready to prove it?

Pass the test and this pattern moves unknown strong while earning +1 Grip toward your certificate.

10 questions~5 mineasy hard