題目描述:給定一組區間,求需要移除的最少區間數,使剩餘區間互不重疊。
解題思路:貪心:按結束時間排序,盡量保留結束早的區間(為後面的區間留更多空間)。維護上一個保留區間的結束時間 end。對每個區間:若其開始時間 >= end,可以保留,更新 end;否則需要移除(計數加一),保留結束時間較早的那個(即維持較小的 end)。
時間複雜度:O(n log n) — 排序主導,掃描為 O(n)。
空間複雜度:O(1) — 原地排序,只用常數額外空間。
1. Sort intervals by end time 2. Set end = -infinity, removals = 0 3. For each interval iv: a. If iv.start >= end: keep it, end = iv.end b. Else: remove it (overlap), removals++ 4. Return removals
按開始位置排序:改為按起點排序再用 DP,邏輯更複雜。
二分搜尋 DP O(n log n):找最後不重疊的區間,用二分而非線性掃描 — 時間複雜度相同但常數不同。