2024每日刷题(125)
Leetcode—1235. 规划兼职工作
算法思想
实现代码
class Solution {
public:
int jobScheduling(vector<int>& startTime, vector<int>& endTime, vector<int>& profit) {
int n = startTime.size();
vector<array<int, 3>> jobs(n);
for(int i = 0; i < n; i++) {
jobs[i] = {endTime[i], startTime[i], profit[i]};
}
ranges::sort(jobs, [](auto &a, auto &b) {return a[0] < b[0];});
vector<int> f(n + 1);
for(int i = 0; i < n; i++) {
int j = upper_bound(jobs.begin(), jobs.begin() + i, array<int, 3>{jobs[i][1], INT_MAX, 0}) - jobs.begin();
f[i + 1] = max(f[i], f[j] + jobs[i][2]);
}
return f[n];
}
};
运行结果
upper_bound
自定义排序规则
之后我会持续更新,如果喜欢我的文章,请记得一键三连哦,点赞关注收藏,你的每一个赞每一份关注每一次收藏都将是我前进路上的无限动力 !!!↖(▔▽▔)↗感谢支持!