DDSA Solutions

Maximum number of overlapping Intervals

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?