# 0435. Non-overlapping Intervals
###### tags: `Leetcode` `Medium` `Greedy` `Intervals`
Link: https://leetcode.com/problems/non-overlapping-intervals/description/
## 思路
1. 如果求的是maximum number of non-overlapping intervals,用sort by ending point的方法
2. 如果求的是minimum number of intervals to cover the whole range,用sort by starting point的方法
所以这里我们**sort by ending point**
我们把右边界最小(成为right)的那个区间做为首区间,从排序后的interval中找到所有start小于当前这个右边界right的区间.这些区间都是可以删掉的!这是因为这些区间都互相重合,必然只能保留一个.而保留哪一个呢?就是保留当前这个右边界最小的区间,因为其他区间的右边界都较大,可能会造成对后面区间的重合,有潜在的风险,去掉他们最保险.
## Code
```python=
class Solution:
def eraseOverlapIntervals(self, intervals: List[List[int]]) -> int:
intervals = sorted(intervals, key=lambda i:i[1])
count = 0
end = intervals[0][1]
n = len(intervals)
for i in range(1, n):
if intervals[i][0]<end:
count += 1
else:
end = intervals[i][1]
return count
```
```java=
class Solution {
public int eraseOverlapIntervals(int[][] intervals) {
Arrays.sort(intervals, (a,b)->(a[1]-b[1]));
int idx = 1;
int count = 0;
int end = intervals[0][1];
int n = intervals.length;
while(idx < n){
while(idx < n && end>intervals[idx][0]){
idx++;
count++;
}
if(idx!=n) end = intervals[idx][1];
idx++;
}
return count;
}
}
```