力扣2589.完成所有任务的最少时间
-
贪心
- 按右端点排序,若前后两段有交集,那么如果还需要执行,应尽可能在交集上执行
-
class Solution { public: int findMinimumTime(vector<vector<int>>& tasks) { //按右端点排序 ranges::sort(tasks,[](auto &a,auto &b){ return a[1] < b[1]; }); int ans = 0; //存是否移动 vector<int> run(tasks.back()[1] + 1); for(auto &t:tasks) { int st = t[0],ed = t[1],d = t[2]; //reduce也是求和函数 d -= reduce(run.begin()+st,run.begin()+ed+1); //倒序放节点 for(int i=ed;d>0;i--) { if(!run[i]) { run[i] = true; d -- ; ans ++; } } } return ans; } };