描述
有 n 个活动即将举办,每个活动都有开始时间与活动的结束时间,第 i 个活动的开始时间是 starti ,第 i 个活动的结束时间是 endi ,举办某个活动就需要为该活动准备一个活动主持人。
一位活动主持人在同一时间只能参与一个活动。并且活动主持人需要全程参与活动,换句话说,一个主持人参与了第 i 个活动,那么该主持人在 (starti,endi) 这个时间段不能参与其他任何活动。求为了成功举办这 n 个活动,最少需要多少名主持人。
思路:
首先:要对活动进行排序:开始时间相等的,结束时间从小到大;开始时间不相等的,开始时间从小到大其次:建立一个优先级队列:默认升序,同时处理活动
只提供结束时间,如果当前的开始时间小于队首的结束时间,说明没空闲
如果当前的开始时间大于队首的结束时间,说明可以空闲一个,队首出队
#include<vector>
#include<algorithm>
#include<queue>
#include<functional>
using namespace std;
class Solution {
public:
/**
* 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
* 计算成功举办活动需要多少名主持人
* @param n int整型 有n个活动
* @param startEnd int整型vector<vector<>> startEnd[i][0]用于表示第i个活动的开始时间,startEnd[i][1]表示第i个活动的结束时间
* @return int整型
*/
static bool cmp(vector<int> a, vector<int> b)
{
if (a[0] == b[0])
return a[1] < b[1];
else
return a[0] <