算法题解----leetcode.826.安排工作以达到最大收益
2021/8/26 1:06:03
本文主要是介绍算法题解----leetcode.826.安排工作以达到最大收益,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
先来吐槽一件事,今天我在配置tomcat的时候环境变量整了半天才弄好,然后又要整合idea和javaweb,
最坑爹的来了,我之前用的是idea社区版本,没有javaee,我也不会配置,就很烦,我又没钱买旗舰版,
然后下了个edu版,还是不太行,总之忙活了一两个小时还没搞好,心态小炸,
原本我还在为我终于看不到html css javascript那些我一看到就想吐的东西而窃喜(没有其他的意思,就是我是真的不喜欢学前端,看到<>标签莫名想吐hh)。
言归正传,我们来看看今天的题解.
题目描述:
有一些工作:difficulty[i] 表示第 i 个工作的难度,profit[i] 表示第 i 个工作的收益。 现在我们有一些工人。worker[i] 是第 i 个工人的能力,即该工人只能完成难度小于等于 worker[i] 的工作。 每一个工人都最多只能安排一个工作,但是一个工作可以完成多次。 举个例子,如果 3 个工人都尝试完成一份报酬为 1 的同样工作,那么总收益为 $3。如果一个工人不能完成任何工作,他的收益为 $0 。 我们能得到的最大收益是多少?
示例:
输入: difficulty = [2,4,6,8,10], profit = [10,20,30,40,50], worker = [4,5,6,7] 输出: 100 解释: 工人被分配的工作难度是 [4,4,6,6] ,分别获得 [20,20,30,30] 的收益。
提示:
1 <= difficulty.length = profit.length <= 10000 1 <= worker.length <= 10000 difficulty[i], profit[i], worker[i] 的范围是 [1, 10^5]
这题我的思路是这样的:
开一个map,key存的是困难度,value存的是相应困难度的最大收益,这里因为它有可能两件工作困难度相同但是收益不同,我们肯定取最大值。
然后把工人的能力排个序,声明一个迭代器指向建好的map的begin()位置,遍历排过序的工人数组,这时候要用一个小技巧,设置一个mx存储
map里面困难度小于等于工人能力值的工作的最大收益,这样它的时间复杂度只有O(n+m),再加上之前我们排序的时间复杂度,这题的时间复杂度就是O(nlogn)
范围是10^5,完全可以过,看看代码~
class Solution { public: int maxProfitAssignment(vector<int>& difficulty, vector<int>& profit, vector<int>& worker) { map<int,int> m; for(int i=0;i<difficulty.size();i++) { if(m.find(difficulty[i]) == m.end()) m.insert(make_pair(difficulty[i],profit[i])); else if(m.find(difficulty[i])->second<profit[i]) m.find(difficulty[i])->second = profit[i]; } sort(worker.begin(),worker.end()); int res = 0; int mx = 0; map<int,int>::iterator iter = m.begin(); for(int i=0;i<worker.size();i++) { while(iter!=m.end() && worker[i]>=(*iter).first) { mx = max(mx,(*iter).second); iter++; } res += mx; } return res; } };
这篇关于算法题解----leetcode.826.安排工作以达到最大收益的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2025-01-09CMS内容管理系统是什么?如何选择适合你的平台?
- 2025-01-08CCPM如何缩短项目周期并降低风险?
- 2025-01-08Omnivore 替代品 Readeck 安装与使用教程
- 2025-01-07Cursor 收费太贵?3分钟教你接入超低价 DeepSeek-V3,代码质量逼近 Claude 3.5
- 2025-01-06PingCAP 连续两年入选 Gartner 云数据库管理系统魔力象限“荣誉提及”
- 2025-01-05Easysearch 可搜索快照功能,看这篇就够了
- 2025-01-04BOT+EPC模式在基础设施项目中的应用与优势
- 2025-01-03用LangChain构建会检索和搜索的智能聊天机器人指南
- 2025-01-03图像文字理解,OCR、大模型还是多模态模型?PalliGema2在QLoRA技术上的微调与应用
- 2025-01-03混合搜索:用LanceDB实现语义和关键词结合的搜索技术(应用于实际项目)