首頁 > 後端開發 > php教程 > 。大部分利潤分配工作

。大部分利潤分配工作

王林
發布: 2024-07-18 06:44:44
原創
1013 人瀏覽過

. 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中文網其他相關文章!

來源:dev.to
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板