begin从小到大,end从大到小。然后枚举。
class Solution {
public:
bool judge(vector<int> &a, vector<int> &b)
{
return a[0] <= b[0] && a[1] >= b[1];
}
int removeCoveredIntervals(vector<vector<int>>& intervals) {
sort(intervals.begin(), intervals.end(),
[](vector<int> &a, vector<int> &b)->bool {return a[0] != b[0] ? a[0] < b[0] : a[1] > b[1];});
bool *visit = new bool [intervals.size()];
for (int i = 0; i < intervals.size(); i++)
visit[i] = true;
int ans = intervals.size();
for (int i = 0; i < intervals.size(); i++)
{
if (visit[i])
{
for (int j = i + 1; j < intervals.size(); j++)
{
if (visit[j] && judge(intervals[i], intervals[j]))
{
visit[j] = false;
ans --;
}
}
}
}
delete [] visit;
return ans;
}
};