mirror of
https://github.com/youngyangyang04/leetcode-master.git
synced 2025-07-09 03:34:02 +08:00
Update 0435.无重叠区间.md
This commit is contained in:
@ -248,20 +248,45 @@ class Solution {
|
|||||||
```
|
```
|
||||||
|
|
||||||
### Python
|
### Python
|
||||||
|
贪心 基于左边界
|
||||||
```python
|
```python
|
||||||
class Solution:
|
class Solution:
|
||||||
def eraseOverlapIntervals(self, intervals: List[List[int]]) -> int:
|
def eraseOverlapIntervals(self, intervals: List[List[int]]) -> int:
|
||||||
if len(intervals) == 0: return 0
|
if not intervals:
|
||||||
intervals.sort(key=lambda x: x[1])
|
return 0
|
||||||
count = 1 # 记录非交叉区间的个数
|
|
||||||
end = intervals[0][1] # 记录区间分割点
|
|
||||||
for i in range(1, len(intervals)):
|
|
||||||
if end <= intervals[i][0]:
|
|
||||||
count += 1
|
|
||||||
end = intervals[i][1]
|
|
||||||
return len(intervals) - count
|
|
||||||
```
|
|
||||||
|
|
||||||
|
intervals.sort(key=lambda x: x[0]) # 按照左边界升序排序
|
||||||
|
count = 0 # 记录重叠区间数量
|
||||||
|
|
||||||
|
for i in range(1, len(intervals)):
|
||||||
|
if intervals[i][0] < intervals[i - 1][1]: # 存在重叠区间
|
||||||
|
intervals[i][1] = min(intervals[i - 1][1], intervals[i][1]) # 更新重叠区间的右边界
|
||||||
|
count += 1
|
||||||
|
|
||||||
|
return count
|
||||||
|
|
||||||
|
```
|
||||||
|
贪心 基于左边界 把452.用最少数量的箭引爆气球代码稍做修改
|
||||||
|
```python
|
||||||
|
class Solution:
|
||||||
|
def eraseOverlapIntervals(self, intervals: List[List[int]]) -> int:
|
||||||
|
if not intervals:
|
||||||
|
return 0
|
||||||
|
|
||||||
|
intervals.sort(key=lambda x: x[0]) # 按照左边界升序排序
|
||||||
|
|
||||||
|
result = 1 # 不重叠区间数量,初始化为1,因为至少有一个不重叠的区间
|
||||||
|
|
||||||
|
for i in range(1, len(intervals)):
|
||||||
|
if intervals[i][0] >= intervals[i - 1][1]: # 没有重叠
|
||||||
|
result += 1
|
||||||
|
else: # 重叠情况
|
||||||
|
intervals[i][1] = min(intervals[i - 1][1], intervals[i][1]) # 更新重叠区间的右边界
|
||||||
|
|
||||||
|
return len(intervals) - result
|
||||||
|
|
||||||
|
|
||||||
|
```
|
||||||
### Go
|
### Go
|
||||||
```go
|
```go
|
||||||
func eraseOverlapIntervals(intervals [][]int) int {
|
func eraseOverlapIntervals(intervals [][]int) int {
|
||||||
|
Reference in New Issue
Block a user