# Non-overlapping Intervals
Given a list of intervals `[start, end]`, return the minimum number of intervals you must remove so that none of the remaining ones overlap.
Directly reuses the 'sort by finish time, then greedily keep the earliest-finishing option' proof taught in Module 2's Greedy & Interval lesson — greedy/interval scheduling currently has **zero** mock coverage anywhere in the course.
**Example:** `[[1,2],[2,3],[3,4],[1,3]]` -> `1` (remove `[1,3]`).
Target complexity: O(N log N).