Description


Submission
class Solution {
public:
int maxTwoEvents(vector<vector<int>>& events) {
sort(events.begin(), events.end(), [](vector<int>& v1, vector<int>& v2) {
return v1[1] < v2[1];
});
map<int, int> largest;
int ret = 0;
int tmpMax = 0;
for(auto& event: events) {
int startTime = event[0];
int endTime = event[1];
int value = event[2];
tmpMax = max(tmpMax, value);
largest[endTime] = tmpMax;
}
for(auto& event: events) {
int startTime = event[0];
int endTime = event[1];
int value = event[2];
ret = max(ret, value);
auto it = largest.upper_bound(startTime - 1);
if(it != largest.begin()) {
--it;
ret = max(it->second + value, ret);
}
}
return ret;
}
};
// largest[x]: largest value ended by x
// [[1,3,2],[1,5,5],[4,5,2]]
class Solution {
public:
int maxTwoEvents(vector<vector<int>>& events) {
sort(events.begin(), events.end(), [](vector<int>& v1, vector<int>& v2) {
return v1[1] < v2[1];
});
map<int, int> largest;
int ret = 0;
int tmpMax = 0;
for(auto& event: events) {
int startTime = event[0];
int endTime = event[1];
int value = event[2];
tmpMax = max(tmpMax, value);
largest[endTime] = tmpMax;
}
for(auto& event: events) {
int startTime = event[0];
int endTime = event[1];
int value = event[2];
ret = max(ret, value);
auto it = largest.upper_bound(startTime - 1);
if(it != largest.begin()) {
--it;
ret = max(it->second + value, ret);
}
}
return ret;
}
};
// largest[x]: largest value ended by x
// [[1,3,2],[1,5,5],[4,5,2]]
class Solution { public: int maxTwoEvents(vector<vector<int>>& events) { sort(events.begin(), events.end(), [](vector<int>& v1, vector<int>& v2) { return v1[1] < v2[1]; }); map<int, int> largest; int ret = 0; int tmpMax = 0; for(auto& event: events) { int startTime = event[0]; int endTime = event[1]; int value = event[2]; tmpMax = max(tmpMax, value); largest[endTime] = tmpMax; } for(auto& event: events) { int startTime = event[0]; int endTime = event[1]; int value = event[2]; ret = max(ret, value); auto it = largest.upper_bound(startTime - 1); if(it != largest.begin()) { --it; ret = max(it->second + value, ret); } } return ret; } }; // largest[x]: largest value ended by x // [[1,3,2],[1,5,5],[4,5,2]]
