Skip to content

Commit 290dc89

Browse files
authored
Update non-overlapping-intervals.cpp
1 parent 3bac47d commit 290dc89

File tree

1 file changed

+21
-14
lines changed

1 file changed

+21
-14
lines changed

C++/non-overlapping-intervals.cpp

+21-14
Original file line numberDiff line numberDiff line change
@@ -1,25 +1,32 @@
11
// Time: O(nlogn)
22
// Space: O(1)
33

4-
/**
5-
* Definition for an interval.
6-
* struct Interval {
7-
* int start;
8-
* int end;
9-
* Interval() : start(0), end(0) {}
10-
* Interval(int s, int e) : start(s), end(e) {}
11-
* };
12-
*/
134
class Solution {
145
public:
15-
int eraseOverlapIntervals(vector<Interval>& intervals) {
16-
sort(intervals.begin(), intervals.end(),
17-
[](const Interval& a, const Interval& b) { return a.start < b.start; });
6+
int eraseOverlapIntervals(vector<vector<int>>& intervals) {
7+
sort(intervals.begin(), intervals.end(), [](const auto& a, const auto& b) { return a[1] < b[1]; });
8+
int result = 0, right = numeric_limits<int>::min();
9+
for (const auto& x : intervals) {
10+
if (x[0] < right) {
11+
++result;
12+
} else {
13+
right = x[1];
14+
}
15+
}
16+
return result;
17+
}
18+
};
1819

20+
// Time: O(nlogn)
21+
// Space: O(1)
22+
class Solution2 {
23+
public:
24+
int eraseOverlapIntervals(vector<vector<int>>& intervals) {
25+
sort(intervals.begin(), intervals.end(), [](const auto& a, const auto& b) { return a[0] < b[0]; });
1926
int result = 0, prev = 0;
2027
for (int i = 1; i < intervals.size(); ++i) {
21-
if (intervals[i].start < intervals[prev].end) {
22-
if (intervals[i].end < intervals[prev].end) {
28+
if (intervals[i][0] < intervals[prev][1]) {
29+
if (intervals[i][1] < intervals[prev][1]) {
2330
prev = i;
2431
}
2532
++result;

0 commit comments

Comments
 (0)