DEV Community

Dev Cookies
Dev Cookies

Posted on

๐Ÿš€ Day 4: Mastering the Merge Intervals Pattern (Amazon Interview Series)

The Merge Intervals Pattern is all about managing overlapping ranges.
Amazon loves this pattern because its business is filled with scheduling problems:

  • Meeting room allocation (AWS teams, internal scheduling)
  • Delivery time windows (Amazon Logistics)
  • Calendar management (Amazon Chime, WorkDocs)
  • Resource allocation (EC2 instance booking windows)

๐Ÿ”‘ Core Idea

  1. Sort intervals by start time.
  2. Iterate through intervals, merging overlaps.
  3. If current interval overlaps with previous โ†’ merge. Else โ†’ add new.

When Amazon uses this:

  • Scheduling problems
  • Range overlaps
  • Time/resource allocation

๐Ÿ“ Problem 1: Merge Intervals

๐Ÿ‘‰ Amazon-style phrasing:
Given an array of intervals, merge all overlapping intervals.

Java Solution

import java.util.*;

public class MergeIntervals {
    public static int[][] merge(int[][] intervals) {
        if (intervals.length <= 1) return intervals;

        Arrays.sort(intervals, (a, b) -> Integer.compare(a[0], b[0]));
        List<int[]> merged = new ArrayList<>();

        int[] current = intervals[0];
        for (int i = 1; i < intervals.length; i++) {
            if (intervals[i][0] <= current[1]) {
                current[1] = Math.max(current[1], intervals[i][1]); // merge
            } else {
                merged.add(current);
                current = intervals[i];
            }
        }
        merged.add(current);

        return merged.toArray(new int[merged.size()][]);
    }

    public static void main(String[] args) {
        int[][] intervals = {{1,3},{2,6},{8,10},{15,18}};
        int[][] result = merge(intervals);
        for (int[] arr : result) {
            System.out.println(Arrays.toString(arr));
        }
        // Output: [1,6], [8,10], [15,18]
    }
}
Enter fullscreen mode Exit fullscreen mode

โœ… Time Complexity: O(n log n) (sorting dominates).
โœ… Why Amazon asks: Real-world scheduling & AWS resource allocation.


๐Ÿ“ Problem 2: Insert Interval

๐Ÿ‘‰ Amazon-style phrasing:
You are given a list of non-overlapping intervals sorted by start time. Insert a new interval into the list and merge if necessary.

Java Solution

import java.util.*;

public class InsertInterval {
    public static int[][] insert(int[][] intervals, int[] newInterval) {
        List<int[]> result = new ArrayList<>();
        int i = 0;

        // Add all before overlap
        while (i < intervals.length && intervals[i][1] < newInterval[0]) {
            result.add(intervals[i++]);
        }

        // Merge overlap
        while (i < intervals.length && intervals[i][0] <= newInterval[1]) {
            newInterval[0] = Math.min(newInterval[0], intervals[i][0]);
            newInterval[1] = Math.max(newInterval[1], intervals[i][1]);
            i++;
        }
        result.add(newInterval);

        // Add rest
        while (i < intervals.length) {
            result.add(intervals[i++]);
        }

        return result.toArray(new int[result.size()][]);
    }
}
Enter fullscreen mode Exit fullscreen mode

โœ… Amazon focus: Insert + merge operations (very common).


๐Ÿ“ Problem 3: Minimum Meeting Rooms

๐Ÿ‘‰ Amazon-style phrasing:
Given meeting time intervals, find the minimum number of conference rooms required.

Java Solution

import java.util.*;

public class MeetingRoomsII {
    public static int minMeetingRooms(int[][] intervals) {
        if (intervals.length == 0) return 0;

        int[] start = new int[intervals.length];
        int[] end = new int[intervals.length];

        for (int i = 0; i < intervals.length; i++) {
            start[i] = intervals[i][0];
            end[i] = intervals[i][1];
        }
        Arrays.sort(start);
        Arrays.sort(end);

        int rooms = 0, endPtr = 0;
        for (int i = 0; i < intervals.length; i++) {
            if (start[i] < end[endPtr]) {
                rooms++; // new room needed
            } else {
                endPtr++; // reuse room
            }
        }
        return rooms;
    }

    public static void main(String[] args) {
        int[][] meetings = {{0,30},{5,10},{15,20}};
        System.out.println(minMeetingRooms(meetings)); // Output: 2
    }
}
Enter fullscreen mode Exit fullscreen mode

โœ… Amazon focus: Resource optimization โ€” this maps directly to AWS resource scheduling.


๐Ÿ“ Problem 4: Employee Free Time

๐Ÿ‘‰ Amazon-style phrasing:
Given employeesโ€™ working intervals, return the common free time intervals.

Java Solution

import java.util.*;

class Interval {
    int start, end;
    Interval(int s, int e) { start = s; end = e; }
}

public class EmployeeFreeTime {
    public static List<Interval> employeeFreeTime(List<List<Interval>> schedule) {
        List<Interval> all = new ArrayList<>();
        for (List<Interval> list : schedule) {
            all.addAll(list);
        }

        all.sort((a, b) -> a.start - b.start);
        List<Interval> result = new ArrayList<>();
        int end = all.get(0).end;

        for (int i = 1; i < all.size(); i++) {
            if (all.get(i).start > end) {
                result.add(new Interval(end, all.get(i).start));
            }
            end = Math.max(end, all.get(i).end);
        }
        return result;
    }
}
Enter fullscreen mode Exit fullscreen mode

โœ… Amazon focus: Think beyond โ€œmerge overlapsโ€ โ†’ now find โ€œgapsโ€.


๐Ÿ“š Extended Problem List (Practice)

  1. Meeting Rooms I (LeetCode 252) โ€“ Just check if all meetings can be attended.
  2. Interval List Intersections โ€“ Find intersections between two lists of intervals.
  3. Maximum CPU Load โ€“ Given jobs with start/end/load, find max CPU load at any time.
  4. Airplane Landing & Takeoff โ€“ Find the maximum planes in the sky at once.
  5. Range Module โ€“ Add/remove/query intervals dynamically.

๐ŸŽฏ Key Takeaways

  • Always sort by start time first.
  • Merge = handle overlaps, Free Time = handle gaps.
  • Amazon often disguises this as:

    • Calendar scheduling
    • CPU utilization
    • Logistics & delivery slots
    • AWS resource booking

๐Ÿ“… Next in the series (Day 5):
๐Ÿ‘‰ Monotonic Stack & Queue Pattern โ€“ powerful for โ€œNext Greater Elementโ€, โ€œDaily Temperaturesโ€, and โ€œTrapping Rain Waterโ€ (Amazonโ€™s most loved stack interview set).

Top comments (0)