DDSA Solutions

Maximum number of overlapping Intervals

Problem Overview

Find maximum number of intervals that overlap at any single point.

Advertisement

Intuition

Find maximum number of intervals that overlap at any single point. Sweep line.

Algorithm

  1. 1Events: +1 at start, -1 at end+1. Sort events, process in order, track running sum maximum.

Common Pitfalls

  • Sweep line with events. Sort starts/ends separately or together. Running counter max gives answer.
Maximum number of overlapping Intervals.java
Java
// Approach: Event sweep. Mark +1 at start, -1 at end+1. Max prefix sum is max overlap.
// Time: O(n log n) Space: O(n)
import java.util.*;

class Solution {
    public static int overlapInt(int[][] arr) {
        int[] start = new int[arr.length];
        int[] end = new int[arr.length];

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

        Arrays.sort(start);
        Arrays.sort(end);

        int i = 0;
        int j = 0;
        int overlap = 0;
        int maxOverlap = 0;
        while (i < start.length && j < end.length) {
            if (start[i] <= end[j]) {
                overlap++;
                maxOverlap = Math.max(overlap, maxOverlap);
                i++;
            } else {
                overlap--;
                j++;
            }
        }
        
        return maxOverlap;
    }
}
Advertisement
Was this solution helpful?