Given a list of clips with [start, end] that are within range [0, time], find the minimum number of clips to cover the entire range [0, time]. Return -1 if impossible.
Greedy: sort by start. At each step greedily pick the clip that starts at or before current reach and extends furthest.
- Sort clips by start.
- Track current reach and the farthest we can extend in the next round.
- When we pass a "checkpoint" (need a new clip): update reach to farthest, increment count.
- If no clip starts at or before current reach, return -1.
- Time Complexity: O(N log N)
- Space Complexity: O(1)