0826. Most Profit Assigning Work

# 826. Most Profit Assigning Work#

## 题目 #

We have jobs: difficulty[i] is the difficulty of the ith job, and profit[i] is the profit of the ith job.

Now we have some workers. worker[i] is the ability of the ith worker, which means that this worker can only complete a job with difficulty at most worker[i].

Every worker can be assigned at most one job, but one job can be completed multiple times.

For example, if 3 people attempt the same job that pays \$1, then the total profit will be \$3. If a worker cannot complete any job, his profit is \$0.

What is the most profit we can make?

Example 1:

``````
Input: difficulty = [2,4,6,8,10], profit = [10,20,30,40,50], worker = [4,5,6,7]
Output: 100
Explanation: Workers are assigned jobs of difficulty [4,4,6,6] and they get profit of [20,20,30,30] seperately.

``````

Note:

• 1 <= difficulty.length = profit.length <= 10000
• 1 <= worker.length <= 10000
• difficulty[i], profit[i], worker[i] are in range [1, 10^5]

## 代码 #

``````
package leetcode

import (
"fmt"
"sort"
)

Difficulty int
Profit     int
}

// Len define
func (p Tasks) Len() int { return len(p) }

// Swap define
func (p Tasks) Swap(i, j int) { p[i], p[j] = p[j], p[i] }

// SortByDiff define

// Less define
func (p SortByDiff) Less(i, j int) bool {
}

func maxProfitAssignment(difficulty []int, profit []int, worker []int) int {
if len(difficulty) == 0 || len(profit) == 0 || len(worker) == 0 {
return 0
}
for i := 0; i < len(difficulty); i++ {
}
sort.Ints(worker)
for i := 1; i < len(tasks); i++ {
}
for _, w := range worker {
for index < len(difficulty) && w >= tasks[index].Difficulty {
index++
} Nov 25, 2022 Edit this page