Minimum Platforms (Train Schedule)
Problem Statement
Given arrival and departure times of trains, find the minimum number of platforms needed so no train waits. This medium-level greedy problem is about managing a busy station—keep the trains moving!
Example
Input: arr = [900, 940, 950, 1100], dep = [910, 1200, 1120, 1130]
Output: 3 (peak at 950-1100)
Input: arr = [900, 1100], dep = [1000, 1200]
Output: 1 (no overlap)
Code
Java
Python
JavaScript
public class Solution { public int minPlatforms(int[] arr, int[] dep) { Arrays.sort(arr); Arrays.sort(dep); int platforms = 0, maxPlatforms = 0; int i = 0, j = 0; while (i < arr.length) { if (arr[i] <= dep[j]) { platforms++; i++; maxPlatforms = Math.max(maxPlatforms, platforms); } else { platforms--; j++; } } return maxPlatforms; } }
def min_platforms(arr, dep): arr.sort() dep.sort() platforms = 0 max_platforms = 0 i, j = 0, 0 while i < len(arr): if arr[i] <= dep[j]: platforms += 1 i += 1 max_platforms = max(max_platforms, platforms) else: platforms -= 1 j += 1 return max_platforms
function minPlatforms(arr, dep) { arr.sort((a, b) => a - b); dep.sort((a, b) => a - b); let platforms = 0, maxPlatforms = 0; let i = 0, j = 0; while (i < arr.length) { if (arr[i] <= dep[j]) { platforms++; i++; maxPlatforms = Math.max(maxPlatforms, platforms); } else { platforms--; j++; } } return maxPlatforms; }
Explanation
- Greedy Choice: Sort arrivals and departures, track overlapping trains.
- Flow: Increment platforms for arrivals, decrement for departures.
- Example: [900,940,950,1100] → peak at 3 platforms.
Note
Time complexity: O(n log n), Space complexity: O(1). Efficient station management!