题解 | #牛奶供应问题#
牛奶供应问题
https://www.nowcoder.com/practice/8c66c9b7deea496193e609b70f39783d
#include <queue> class Solution { public: /** * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 * * * @param taskDurations int整型vector * @param capacity int整型 * @return int整型 */ int animalTaskScheduler(vector<int>& taskDurations, int capacity) { // write code here priority_queue<int,vector<int>,greater<int>> table; for(int i = 0;i<taskDurations.size();++i) { if(table.size()<capacity) table.push(taskDurations[i]); else { int t = table.top(); table.pop(); t += taskDurations[i]; table.push(t); } } int res = 0; while(!table.empty()) { res = table.top(); table.pop(); } return res; } };
直接理解成三条并行流水线,起始时间都是0,用小根堆来记录最短的那根流水线的长度(堆顶),每次把task添加到最短的流水线后面。
结果就是取最终最长的那根流水线的时间