本文主要是介绍【题解】NC147 主持人调度(二)(贪心 + 优先级队列),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
https://www.nowcoder.com/practice/4edf6e6d01554870a12f218c94e8a299?tpId=196&tqId=37562&ru=/exam/oj
#include <functional>
#include <queue>
#include <vector>
class Solution {
public:/*** 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可** 计算成功举办活动需要多少名主持人* @param n int整型 有n个活动* @param startEnd int整型vector<vector<>> startEnd[i][0]用于表示第i个活动的开始时间,startEnd[i][1]表示第i个活动的结束时间* @return int整型*/int minmumNumberOfHost(int n, vector<vector<int> >& startEnd) {// write code heresort(startEnd.begin(), startEnd.end()); // 排升序priority_queue<int, vector<int>, greater<int>> minHeap; // 建小堆minHeap.push(startEnd[0][1]); // 放入第一个元素for (int i = 1; i < n; ++i) {int a = startEnd[i][0], b = startEnd[i][1];if (a >= minHeap.top()) // 没有重叠{minHeap.pop();minHeap.push(b);}else // 有重叠{minHeap.push(b); // 重新安排一个人}}return minHeap.size();}
};
这篇关于【题解】NC147 主持人调度(二)(贪心 + 优先级队列)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!