首页 >后端开发 >php教程 >。大部分利润分配工作

。大部分利润分配工作

王林
王林原创
2024-07-18 06:44:44983浏览

. Most Profit Assigning Work

826。最多利润分配工作

你有 n 份工作和 m 名工人。给你三个数组:难度、利润和工人,其中:

  • 难度[i]和利润[i]是第i工作的难度和利润,并且
  • worker[j]是第j个worker的能力(即第j个worker只能完成最多worker[j]难度的工作)。

每个工人最多可以分配一项工作,但一项工作可以完成多次

  • 例如,如果三名工人尝试支付 1 美元的同一份工作,那么总利润将为 3 美元。如果工人无法完成任何工作,他们的利润为 0 美元。

返回将工人分配到工作岗位后我们能获得的最大利润

示例1:

  • 输入:难度 = [2,4,6,8,10],利润 = [10,20,30,40,50],工人 = [4,5,6,7]
  • 输出: 100
  • 说明:工人被分配困难的工作[4,4,6,6],他们分别获得[20,20,30,30]的利润。

示例2:

  • 输入:难度 = [85,47,57],利润 = [24,66,99],工人 = [40,25,25]
  • 输出: 0

约束:

  • n == 难度.长度
  • n ==profit.length
  • m ==worker.length
  • 1 4
  • 1 5

解决方案:

class Solution {

    /**
     * @param Integer[] $difficulty
     * @param Integer[] $profit
     * @param Integer[] $worker
     * @return Integer
     */
    function maxProfitAssignment($difficulty, $profit, $worker) {
        $ans = 0;
        $jobs = array();

        for ($i = 0; $i < count($difficulty); ++$i) {
            $jobs[] = array($difficulty[$i], $profit[$i]);
        }

        sort($jobs);
        sort($worker);

        $i = 0;
        $maxProfit = 0;

        foreach ($worker as $w) {
            for (; $i < count($jobs) && $w >= $jobs[$i][0]; ++$i) {
                $maxProfit = max($maxProfit, $jobs[$i][1]);
            }
            $ans += $maxProfit;
        }

        return $ans;
    }
}

联系链接

  • 领英
  • GitHub

以上是。大部分利润分配工作的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn