有一些工作:difficulty[i] 表示第i個工作的難度,profit[i]表示第i個工作的收益。
現在我們有一些工人。worker[i]是第i個工人的能力,即該工人只能完成難度小於等於worker[i]的工作。
每乙個工人都最多只能安排乙個工作,但是乙個工作可以完成多次。
舉個例子,如果3個工人都嘗試完成乙份報酬為1的同樣工作,那麼總收益為 $3。如果乙個工人不能完成任何工作,他的收益為 $0 。
我們能得到的最大收益是多少?
先將前兩個陣列配對排序,將worker排序,從頭到尾依次計算就好:
class
solution
:def
maxprofitassignment
(self, difficulty: list[
int]
, profit: list[
int]
, worker: list[
int])-
>
int:
pair =
[[difficulty[i]
, profit[i]
]for i in
range
(len
(difficulty))]
pair.sort(
) worker.sort(
) tmp, res, loc =0,
0,0for man in worker:
while loc <
len(difficulty)
and man>=pair[loc][0
]:tmp =
max(tmp, pair[loc][1
])loc +=
1 res += tmp
return res
Leetcode 826 安排工作以達到最大利益
有一些工作 difficulty i 表示第i個工作的難度,profit i 表示第i個工作的收益。現在我們有一些工人。worker i 是第i個工人的能力,即該工人只能完成難度小於等於worker i 的工作。每乙個工人都最多只能安排乙個工作,但是乙個工作可以完成多次。舉個例子,如果3個工人都嘗試...
LeetCode826 安排工作以達到最大收益
原題鏈結 有一些工作 difficulty i 表示第i個工作的難度,profit i 表示第i個工作的收益。現在我們有一些工人。worker i 是第i個工人的能力,即該工人只能完成難度小於等於worker i 的工作。每乙個工人都最多只能安排乙個工作,但是乙個工作可以完成多次。舉個例子,如果3個...
826 安排工作以達到最大收益
有一些工作 difficulty i 表示第i個工作的難度,profit i 表示第i個工作的收益。現在我們有一些工人。worker i 是第i個工人的能力,即該工人只能完成難度小於等於worker i 的工作。每乙個工人都最多只能安排乙個工作,但是乙個工作可以完成多次。舉個例子,如果3個工人都嘗試...