思路:
1.利用贪心算法求解,先结束的会议先参加
2.根据需求修改sort的compare函数,结束时间相同看开始时间,不同则选择先结束的
算法时间复杂度:o(n2)
代码:
class Solution {
public:
int maxEvents(vector<vector<int>>& events) {
//根据活动的结束时间进行排序
sort(events.begin(), events.end(),compare);
bool busy[100001] = {0};
int count=0;
for(auto &e:events)
for(int i=e[0]; i<=e[1];i++)
if(busy[i]==0)
{
count++;
busy[i]=1;
break;
}
return count;
}
static bool compare(vector<int> &a, vector<int> &b)
{ //结束时间相同,看开始时间
if(a[1]==b[1])
return a[0]<b[0];
//结束时间不同,结束早的在前
else
return a[1]<b[1];
}
};