LeetCode:安排工作以达到最大收益【455】

题目描述

有一些工作: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]

题目分析

  

Java题解

class Solution {
public int maxProfitAssignment(int[] difficulty, int[] profit, int[] worker) {
ArrayList<Pair> jobs = new ArrayList<>();
for(int i=0;i<difficulty.length;i++)
jobs.add(new Pair(difficulty[i],profit[i]));
Collections.sort(jobs, new Comparator<Pair>() {
@Override
public int compare(Pair o1, Pair o2) {
/*
< return -1
= return 0
> return 1
*/
return o1.difficulty-o2.difficulty;
}
});
Arrays.sort(worker);
int ans=0;
int best=0;
int i= 0;
for(int level:worker)
{
while (i<difficulty.length&&level>=jobs.get(i).difficulty)
best =Math.max(best,jobs.get(i++).profit);
ans +=best;
}
return ans;
}
} class Pair{
int difficulty;
int profit;
public Pair(int difficulty, int profit) {
this.difficulty = difficulty;
this.profit = profit;
}
}

最新文章

  1. VisualSVN 4.0.12补丁原创发布
  2. Use Apache HttpClient to Post json data
  3. Cursors in MySQL Stored Procedures
  4. JAVA上百实例源码以及开源项目
  5. HDU 4320 Arcane Numbers 1 (质因子分解)
  6. Sublime的快捷键的使用
  7. wcf长连接
  8. Go语言环境配置 Sublime Text + GoSublime+ gocode + MarGo组合
  9. Git Pro读书笔记
  10. 【模板】KMP字符串匹配
  11. JUnit 异常处理
  12. SQLServer创建用户登录
  13. Python实现 Typora数学公式 转 有道云笔记Markdown数学公式
  14. kubernetes-deployments
  15. 零基础 Vue 开发环境搭建 打开运行Vue项目
  16. php实现多域名共享session会话
  17. plsql oracle 使用教程
  18. spring cloud feign 上传文件报not a type supported by this encoder解决方案
  19. HDU 5876 Sparse Graph(补图中求最短路)
  20. [leetcode]250. Count Univalue Subtrees统计节点值相同的子树

热门文章

  1. iOS升级经验分享
  2. 【报错】项目启动,仅仅报错 One or more listeners failed to start. Full details will be found in the appropriate container log file
  3. 【温故知新】——Bootstrap响应式知识点复习
  4. C#控件之ListView
  5. [Django]中建立数据库视图
  6. TCP/IP详解 卷一(第四、五章 ARP、RARP)
  7. 成都传智播客Java/PHP培训就业率高
  8. 浅谈对TDD的看法
  9. frame框架及其实例
  10. mybatis前台传来一个String,后后台执行sql变成了true