Skip to content

Commit 6aea171

Browse files
committed
Add C++ solution for leetcode 435.
1 parent e5b6199 commit 6aea171

File tree

1 file changed

+39
-0
lines changed

1 file changed

+39
-0
lines changed
Lines changed: 39 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,39 @@
1+
#include<vector>
2+
#include<algorithm>
3+
#include<iostream>
4+
using namespace std;
5+
6+
class Solution {
7+
public:
8+
int eraseOverlapIntervals(vector<vector<int>>& R) { /* R: 代表ranges */
9+
auto cmp = [](const vector<int>& p1, const vector<int>& p2)
10+
{
11+
return p1[1] < p2[1];
12+
};
13+
sort(R.begin(), R.end(), cmp);
14+
const int len = R.size();
15+
if (R.empty()) return 0;
16+
int maxRemain = 1; // maxRemain: 最多保留下来多少个区间
17+
int curRight = R[0][1];
18+
for (int i = 1; i < len; i++)
19+
{
20+
if (R[i][0] >= curRight) /* 新来的区间的左边界R[i][0] 与当前区间的右边界比较, 如果≥成立说明可以再留下1个新的区间 */
21+
{
22+
maxRemain++;
23+
curRight = R[i][1];
24+
}
25+
}
26+
return len - maxRemain;
27+
}
28+
};
29+
30+
// Test
31+
int main()
32+
{
33+
Solution sol;
34+
vector<vector<int>> ranges = {{1, 2}, {2, 3}, {3, 4}, {1, 3}};
35+
auto res = sol.eraseOverlapIntervals(ranges);
36+
cout << res << endl;
37+
38+
return 0;
39+
}

0 commit comments

Comments
 (0)