Skip to content

Commit dfd0736

Browse files
committed
feat: update solutions to lc problem: No.0435
No.0435.Non-overlapping Intervals
1 parent e4d5aba commit dfd0736

File tree

6 files changed

+71
-101
lines changed

6 files changed

+71
-101
lines changed

solution/0400-0499/0435.Non-overlapping Intervals/README.md

Lines changed: 25 additions & 35 deletions
Original file line numberDiff line numberDiff line change
@@ -54,9 +54,9 @@
5454
先按照区间右边界排序。优先选择最小的区间的右边界作为起始边界。遍历区间:
5555

5656
- 若当前区间左边界大于等于起始右边界,说明该区间无需移除,直接更新起始右边界;
57-
- 否则说明该区间需要移除,更新移除区间的数量 cnt
57+
- 否则说明该区间需要移除,更新移除区间的数量 ans
5858

59-
最后返回 cnt 即可。
59+
最后返回 ans 即可。
6060

6161
<!-- tabs:start -->
6262

@@ -70,13 +70,13 @@ class Solution:
7070
if not intervals:
7171
return 0
7272
intervals.sort(key=lambda x: x[1])
73-
cnt, end = 0, intervals[0][1]
74-
for interval in intervals[1:]:
75-
if interval[0] >= end:
76-
end = interval[1]
73+
ans, t = 0, intervals[0][1]
74+
for s, e in intervals[1:]:
75+
if s >= t:
76+
t = e
7777
else:
78-
cnt += 1
79-
return cnt
78+
ans += 1
79+
return ans
8080
```
8181

8282
### **Java**
@@ -90,15 +90,15 @@ class Solution {
9090
return 0;
9191
}
9292
Arrays.sort(intervals, Comparator.comparingInt(a -> a[1]));
93-
int end = intervals[0][1], cnt = 0;
93+
int t = intervals[0][1], ans = 0;
9494
for (int i = 1; i < intervals.length; ++i) {
95-
if (intervals[i][0] >= end) {
96-
end = intervals[i][1];
95+
if (intervals[i][0] >= t) {
96+
t = intervals[i][1];
9797
} else {
98-
++cnt;
98+
++ans;
9999
}
100100
}
101-
return cnt;
101+
return ans;
102102
}
103103
}
104104
```
@@ -128,26 +128,16 @@ function eraseOverlapIntervals(intervals: number[][]): number {
128128
```cpp
129129
class Solution {
130130
public:
131-
int eraseOverlapIntervals(vector<vector<int>> &intervals) {
132-
if (intervals.empty())
133-
{
134-
return 0;
135-
}
136-
sort(intervals.begin(), intervals.end(), [](const auto &a, const auto &b)
137-
{ return a[1] < b[1]; });
138-
int ed = intervals[0][1], cnt = 0;
131+
int eraseOverlapIntervals(vector<vector<int>>& intervals) {
132+
if (intervals.empty()) return 0;
133+
sort(intervals.begin(), intervals.end(), [](const auto &a, const auto &b) { return a[1] < b[1]; });
134+
int ans = 0, t = intervals[0][1];
139135
for (int i = 1; i < intervals.size(); ++i)
140136
{
141-
if (ed <= intervals[i][0])
142-
{
143-
ed = intervals[i][1];
144-
}
145-
else
146-
{
147-
++cnt;
148-
}
137+
if (t <= intervals[i][0]) t = intervals[i][1];
138+
else ++ans;
149139
}
150-
return cnt;
140+
return ans;
151141
}
152142
};
153143
```
@@ -162,15 +152,15 @@ func eraseOverlapIntervals(intervals [][]int) int {
162152
sort.Slice(intervals, func(i, j int) bool {
163153
return intervals[i][1] < intervals[j][1]
164154
})
165-
end, cnt := intervals[0][1], 0
155+
t, ans := intervals[0][1], 0
166156
for i := 1; i < len(intervals); i++ {
167-
if intervals[i][0] >= end {
168-
end = intervals[i][1]
157+
if intervals[i][0] >= t {
158+
t = intervals[i][1]
169159
} else {
170-
cnt++
160+
ans++
171161
}
172162
}
173-
return cnt
163+
return ans
174164
}
175165
```
176166

solution/0400-0499/0435.Non-overlapping Intervals/README_EN.md

Lines changed: 23 additions & 33 deletions
Original file line numberDiff line numberDiff line change
@@ -55,13 +55,13 @@ class Solution:
5555
if not intervals:
5656
return 0
5757
intervals.sort(key=lambda x: x[1])
58-
cnt, end = 0, intervals[0][1]
59-
for interval in intervals[1:]:
60-
if interval[0] >= end:
61-
end = interval[1]
58+
ans, t = 0, intervals[0][1]
59+
for s, e in intervals[1:]:
60+
if s >= t:
61+
t = e
6262
else:
63-
cnt += 1
64-
return cnt
63+
ans += 1
64+
return ans
6565
```
6666

6767
### **Java**
@@ -73,15 +73,15 @@ class Solution {
7373
return 0;
7474
}
7575
Arrays.sort(intervals, Comparator.comparingInt(a -> a[1]));
76-
int end = intervals[0][1], cnt = 0;
76+
int t = intervals[0][1], ans = 0;
7777
for (int i = 1; i < intervals.length; ++i) {
78-
if (intervals[i][0] >= end) {
79-
end = intervals[i][1];
78+
if (intervals[i][0] >= t) {
79+
t = intervals[i][1];
8080
} else {
81-
++cnt;
81+
++ans;
8282
}
8383
}
84-
return cnt;
84+
return ans;
8585
}
8686
}
8787
```
@@ -111,26 +111,16 @@ function eraseOverlapIntervals(intervals: number[][]): number {
111111
```cpp
112112
class Solution {
113113
public:
114-
int eraseOverlapIntervals(vector<vector<int>> &intervals) {
115-
if (intervals.empty())
116-
{
117-
return 0;
118-
}
119-
sort(intervals.begin(), intervals.end(), [](const auto &a, const auto &b)
120-
{ return a[1] < b[1]; });
121-
int ed = intervals[0][1], cnt = 0;
114+
int eraseOverlapIntervals(vector<vector<int>>& intervals) {
115+
if (intervals.empty()) return 0;
116+
sort(intervals.begin(), intervals.end(), [](const auto &a, const auto &b) { return a[1] < b[1]; });
117+
int ans = 0, t = intervals[0][1];
122118
for (int i = 1; i < intervals.size(); ++i)
123119
{
124-
if (ed <= intervals[i][0])
125-
{
126-
ed = intervals[i][1];
127-
}
128-
else
129-
{
130-
++cnt;
131-
}
120+
if (t <= intervals[i][0]) t = intervals[i][1];
121+
else ++ans;
132122
}
133-
return cnt;
123+
return ans;
134124
}
135125
};
136126
```
@@ -145,15 +135,15 @@ func eraseOverlapIntervals(intervals [][]int) int {
145135
sort.Slice(intervals, func(i, j int) bool {
146136
return intervals[i][1] < intervals[j][1]
147137
})
148-
end, cnt := intervals[0][1], 0
138+
t, ans := intervals[0][1], 0
149139
for i := 1; i < len(intervals); i++ {
150-
if intervals[i][0] >= end {
151-
end = intervals[i][1]
140+
if intervals[i][0] >= t {
141+
t = intervals[i][1]
152142
} else {
153-
cnt++
143+
ans++
154144
}
155145
}
156-
return cnt
146+
return ans
157147
}
158148
```
159149

Lines changed: 7 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -1,24 +1,14 @@
11
class Solution {
22
public:
3-
int eraseOverlapIntervals(vector<vector<int>> &intervals) {
4-
if (intervals.empty())
5-
{
6-
return 0;
7-
}
8-
sort(intervals.begin(), intervals.end(), [](const auto &a, const auto &b)
9-
{ return a[1] < b[1]; });
10-
int ed = intervals[0][1], cnt = 0;
3+
int eraseOverlapIntervals(vector<vector<int>>& intervals) {
4+
if (intervals.empty()) return 0;
5+
sort(intervals.begin(), intervals.end(), [](const auto &a, const auto &b) { return a[1] < b[1]; });
6+
int ans = 0, t = intervals[0][1];
117
for (int i = 1; i < intervals.size(); ++i)
128
{
13-
if (ed <= intervals[i][0])
14-
{
15-
ed = intervals[i][1];
16-
}
17-
else
18-
{
19-
++cnt;
20-
}
9+
if (t <= intervals[i][0]) t = intervals[i][1];
10+
else ++ans;
2111
}
22-
return cnt;
12+
return ans;
2313
}
2414
};

solution/0400-0499/0435.Non-overlapping Intervals/Solution.go

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -5,13 +5,13 @@ func eraseOverlapIntervals(intervals [][]int) int {
55
sort.Slice(intervals, func(i, j int) bool {
66
return intervals[i][1] < intervals[j][1]
77
})
8-
end, cnt := intervals[0][1], 0
8+
t, ans := intervals[0][1], 0
99
for i := 1; i < len(intervals); i++ {
10-
if intervals[i][0] >= end {
11-
end = intervals[i][1]
10+
if intervals[i][0] >= t {
11+
t = intervals[i][1]
1212
} else {
13-
cnt++
13+
ans++
1414
}
1515
}
16-
return cnt
16+
return ans
1717
}

solution/0400-0499/0435.Non-overlapping Intervals/Solution.java

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -4,14 +4,14 @@ public int eraseOverlapIntervals(int[][] intervals) {
44
return 0;
55
}
66
Arrays.sort(intervals, Comparator.comparingInt(a -> a[1]));
7-
int end = intervals[0][1], cnt = 0;
7+
int t = intervals[0][1], ans = 0;
88
for (int i = 1; i < intervals.length; ++i) {
9-
if (intervals[i][0] >= end) {
10-
end = intervals[i][1];
9+
if (intervals[i][0] >= t) {
10+
t = intervals[i][1];
1111
} else {
12-
++cnt;
12+
++ans;
1313
}
1414
}
15-
return cnt;
15+
return ans;
1616
}
1717
}

solution/0400-0499/0435.Non-overlapping Intervals/Solution.py

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -3,10 +3,10 @@ def eraseOverlapIntervals(self, intervals: List[List[int]]) -> int:
33
if not intervals:
44
return 0
55
intervals.sort(key=lambda x: x[1])
6-
cnt, end = 0, intervals[0][1]
7-
for interval in intervals[1:]:
8-
if interval[0] >= end:
9-
end = interval[1]
6+
ans, t = 0, intervals[0][1]
7+
for s, e in intervals[1:]:
8+
if s >= t:
9+
t = e
1010
else:
11-
cnt += 1
12-
return cnt
11+
ans += 1
12+
return ans

0 commit comments

Comments
 (0)