leetcode826 安排工作以達到最大收益

2021-09-22 12:23:31 字數 925 閱讀 7172

有一些工作: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個工人都嘗試...