最大獲利的工作安排 Most Profit Assigning Work_Leetcode #826 Greedy策略

閱讀時間約 4 分鐘

題目敘述 Most Profit Assigning Work

公司裡有n位員工,m件任務。

每位員工的能力記錄在worker陣列。

每個任務對應的能力要求和獲利紀錄在difficulty 和profit陣列。

不同的員工可以做同樣的任務。

請問怎麼分配任務可以得到整體最大獲利?


測試範例

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 a profit of [20,20,30,30] separately.

Example 2:

Input: difficulty = [85,47,57], profit = [24,66,99], worker = [40,25,25]
Output: 0

難度都超過員工能力值,沒有合適的任務。​ 

約束條件

Constraints:

  • n == difficulty.length
  • n == profit.length

總共有n個任務

  • m == worker.length

總共有m位員工。

  • 1 <= n, m <= 10^4

參數n和m都介於1~一萬之間。

  • 1 <= difficulty[i], profit[i], worker[i] <= 10^5

任務難度、任務獲利、員工能力都介於1~十萬之間。


觀察 人盡其才 Greedy策略

最大獲利 直覺想到的就是盡可能挑能力範圍內,獲利大的任務來做。

先針對每個任務依據難度從小到大排序。

每位員工也依據能力從小到大排序。


接著,針對每位員工,在他的能力範圍內,挑選獲利最大的任務來做。

這邊的思想就是(Greedy策略)局部最佳化,進一步帶來整體的最佳化


演算法 人盡其才 Greedy策略

承接觀察點的思考。

每個任務依據難度從小到大排序。

每位員工也依據能力從小到大排序。

針對每位員工,在他的能力範圍內,挑選獲利最大的任務來做。


程式碼 人盡其才 Greedy策略

class Solution:
def maxProfitAssignment(self, difficulty : List[int], profit: List[int], worker: List[int]) -> int:

# sort jobs by (difficulty, profit) pair
jobs = sorted(zip(difficulty , profit))

# sort worker by ability from small to large
worker.sort()

total_profit, job_index, max_profit = 0,0,0

# Each worker choose the job which has most profit and within ability.
for ability in worker:

while job_index < len(jobs) and jobs[job_index][0] <= ability:
max_profit = max(max_profit, jobs[job_index][1])
job_index+=1

total_profit += max_profit

return total_profit

複雜度分析

時間複雜度: O( n log n + m log m)

排序任務耗費O( n log n)

排序員工耗費O( m log m)

分配任務耗費O( m + n)

空間複雜度: O(n)

重新產生一個新的任務的(難度, 獲利)陣列,所需空間為O(n)


關鍵知識點 Greedy策略

針對每位員工,在他的能力範圍內,挑選獲利最大的任務來做

這邊的思想就是(Greedy策略)局部最佳化,進一步帶來整體的最佳化


Reference

[1] Most Profit Assigning Work - LeetCode

82會員
417Content count
由有業界實戰經驗的演算法工程師, 手把手教你建立解題的框架, 一步步寫出高效、清晰易懂的解題答案。 著重在讓讀者啟發思考、理解演算法,熟悉常見的演算法模板。 深入淺出地介紹題目背後所使用的演算法意義,融會貫通演算法與資料結構的應用。 在幾個經典的題目融入一道題目的多種解法,或者同一招解不同的題目,擴展廣度,並加深印象。
留言0
查看全部
發表第一個留言支持創作者!
題目敘述 Patching Array 題目給定一個整數陣列, 請問還要補上多少個數字,才能用這些數字的和拼湊出所有1~n的整數。
題目敘述 IPO 新企業準備上市增資,初始資本是w,可以參加k個專案。 每個專案的獲利和投入成本分別記錄在profits和capital陣列。 請問,在盡可能增資的情況下,最後最大的總資本是多少?
題目敘述 Triangle 題目會給我們一個三角形的二維陣列triangle ,每個元素分別代表每個格子的成本,請問我們從最頂端到底部的下墜路徑的最小成本總和是多少? 每次下墜到下一排的時候,可以有兩種選擇: 1.往左下方的格子點移動。 2.往右下方的格子點移動。 測試範例 Examp
題目敘述 Minimum Increment to Make Array Unique 給定一個整數陣列,每回合可以任意挑一個數字進行+1的加法操作。 請問最少需要多少次的+1加法操作,才能讓每個數字都相異?
Paint House 題目會給定一個成本陣列costs,分別代表每棟房屋粉刷成紅色、藍色、綠色的成本。 請問粉刷所有房屋的最小成本是多少,而且相鄰的房屋不可同一種顏色。
題目敘述 Longest Arithmetic Subsequence of Given Difference 給定一個整數陣列nums,請找出給定公差difference的最長的等差數列的長度是多少?
題目敘述 Patching Array 題目給定一個整數陣列, 請問還要補上多少個數字,才能用這些數字的和拼湊出所有1~n的整數。
題目敘述 IPO 新企業準備上市增資,初始資本是w,可以參加k個專案。 每個專案的獲利和投入成本分別記錄在profits和capital陣列。 請問,在盡可能增資的情況下,最後最大的總資本是多少?
題目敘述 Triangle 題目會給我們一個三角形的二維陣列triangle ,每個元素分別代表每個格子的成本,請問我們從最頂端到底部的下墜路徑的最小成本總和是多少? 每次下墜到下一排的時候,可以有兩種選擇: 1.往左下方的格子點移動。 2.往右下方的格子點移動。 測試範例 Examp
題目敘述 Minimum Increment to Make Array Unique 給定一個整數陣列,每回合可以任意挑一個數字進行+1的加法操作。 請問最少需要多少次的+1加法操作,才能讓每個數字都相異?
Paint House 題目會給定一個成本陣列costs,分別代表每棟房屋粉刷成紅色、藍色、綠色的成本。 請問粉刷所有房屋的最小成本是多少,而且相鄰的房屋不可同一種顏色。
題目敘述 Longest Arithmetic Subsequence of Given Difference 給定一個整數陣列nums,請找出給定公差difference的最長的等差數列的長度是多少?
你可能也想看
Thumbnail
重點摘要: 1.9 月降息 2 碼、進一步暗示年內還有 50 bp 降息 2.SEP 上修失業率預期,但快速的降息速率將有助失業率觸頂 3.未來幾個月經濟數據將繼續轉弱,經濟復甦的時點或是 1Q25 季底附近
Thumbnail
近期的「貼文發佈流程 & 版型大更新」功能大家使用了嗎? 新版式整體視覺上「更加凸顯圖片」,為了搭配這次的更新,我們推出首次貼文策展 ❤️ 使用貼文功能並完成這次的指定任務,還有機會獲得富士即可拍,讓你的美好回憶都可以用即可拍珍藏!
Thumbnail
投資理財內容聲明 文內如有投資理財相關經驗、知識、資訊等內容,皆為作者個人分享行為。 有價證券、指數與衍生性商品之數據資料,僅供輔助說明之用,不代表創作者投資決策之推介及建議。 閱讀同時,請審慎思考自身條件及自我決策,並應有為決策負責之事前認知。 希望您能從這些分享內容汲取投資養份,養成獨立
Thumbnail
中國正式命名並投入使用了兩艘被宣稱為目前建造的最大電動船舶的電池動力貨櫃船。這兩艘船是為中遠航運開發的,是該公司致力於在中國長江上建立電氣化航運網絡的一部分。
Thumbnail
大家好,我是小股民Gumin,個人分析,請斟酌參考 想多學一點觀念可以申請小股民的社團唷~ https://www.cmoney.tw/forum/club/4064 小股民今天想分享該怎麼獲利在相對高檔的位置呢? 依小股民實戰的例子來看,11/1入手原因就是底不破低有打底完
Thumbnail
先跟大家談論風險問題 風險方面 第一、時間問題不好掌握,因為需要盯盤,特別是每週三的選擇權結算日。由於根據我目前的紀錄來看,倒莊翻倍行情發生機率佔比50%左右,可能也有一半的機會遇不到倒莊翻倍行情,因此沒有交易而被消磨掉的個人時間就是最大的機會成本,因為你的資金有一部分拿來操作本專欄的策略,
Thumbnail
先跟大家談論風險問題,再來談本專欄交易策略的特色在哪? 風險方面 第一、時間問題不好掌握,因為需要盯盤,特別是每週三的選擇權結算日。由於根據我目前的紀錄來看,倒莊翻倍行情發生機率佔比50%左右,可能也有一半的機會遇不到倒莊翻倍行情,因此沒有交易而被消磨掉的個人時間就是最大的機會成本,因為你的資金
Thumbnail
在繁華的城市中,小宅常被看作是對於居住舒適度的妥協,人們總認為小空間等同於擁擠和侷限。然而,室內設計的力量就在於此,它可以喚醒小宅的潛力,將其轉化為一個溫馨且功能強大的生活空間。本文將探討室內設計如何發掘小宅的潛力,並提供一些實用的設計建議。 相關文章:【室內設計解惑】什麼是現代簡約風?帶你領略簡約
Thumbnail
商家的目標就是要把我們的消費行為變成一個習慣,這樣才能讓他們利潤最大化。不論你是在消費性電子行業、食品業、金融服務業,大部分顧客的行為也是潛意識習慣引申出來的。 很多人習慣在早上都會喝一杯咖啡,不論是在連鎖咖啡店,還是茶餐廳,這已經成為了人們生活的一部分。 【個人網站】 【加密貨幣】 【被動收入】
【前言】 當一家「新創企業」進入了穩定期~筆者認為:階段性的目標,應該是「獲利」最大化!   「獲利」最大化~筆者認為:一點都不奇怪!  上班族,想加薪~不一定會如老闆的意願;但一般人都不會覺得奇怪呀!  那麼,企業想要賺更多~又有啥好奇怪的!  (若嫌錢賺得太多~也是等錢賺進來後,再分出去!)  
Thumbnail
台灣最大的金融控股公司,國泰金控,股票代號 2882   國泰金的子公司陣容也相當龐大,一樣具有銀行、證券、保險三大事業體  其營業占比最高的是國泰人壽與國泰世華銀行,且占比相當高   從基本面再到技術面,就讓我們看下去吧!
Thumbnail
#46《哈佛商學院的雙贏談判課》(中):克服談判偏誤,為自己帶來最大獲利!作為談判者的我們應該要理解,談判過程中雙方可能是不理性的,這些談判時的心理狀態或偏見會導致人們無法理性衡量最大利益,所以在談判時要把偏誤納入考慮。至於談判中有哪些偏誤。現在我們就一起來看下去吧!
Thumbnail
重點摘要: 1.9 月降息 2 碼、進一步暗示年內還有 50 bp 降息 2.SEP 上修失業率預期,但快速的降息速率將有助失業率觸頂 3.未來幾個月經濟數據將繼續轉弱,經濟復甦的時點或是 1Q25 季底附近
Thumbnail
近期的「貼文發佈流程 & 版型大更新」功能大家使用了嗎? 新版式整體視覺上「更加凸顯圖片」,為了搭配這次的更新,我們推出首次貼文策展 ❤️ 使用貼文功能並完成這次的指定任務,還有機會獲得富士即可拍,讓你的美好回憶都可以用即可拍珍藏!
Thumbnail
投資理財內容聲明 文內如有投資理財相關經驗、知識、資訊等內容,皆為作者個人分享行為。 有價證券、指數與衍生性商品之數據資料,僅供輔助說明之用,不代表創作者投資決策之推介及建議。 閱讀同時,請審慎思考自身條件及自我決策,並應有為決策負責之事前認知。 希望您能從這些分享內容汲取投資養份,養成獨立
Thumbnail
中國正式命名並投入使用了兩艘被宣稱為目前建造的最大電動船舶的電池動力貨櫃船。這兩艘船是為中遠航運開發的,是該公司致力於在中國長江上建立電氣化航運網絡的一部分。
Thumbnail
大家好,我是小股民Gumin,個人分析,請斟酌參考 想多學一點觀念可以申請小股民的社團唷~ https://www.cmoney.tw/forum/club/4064 小股民今天想分享該怎麼獲利在相對高檔的位置呢? 依小股民實戰的例子來看,11/1入手原因就是底不破低有打底完
Thumbnail
先跟大家談論風險問題 風險方面 第一、時間問題不好掌握,因為需要盯盤,特別是每週三的選擇權結算日。由於根據我目前的紀錄來看,倒莊翻倍行情發生機率佔比50%左右,可能也有一半的機會遇不到倒莊翻倍行情,因此沒有交易而被消磨掉的個人時間就是最大的機會成本,因為你的資金有一部分拿來操作本專欄的策略,
Thumbnail
先跟大家談論風險問題,再來談本專欄交易策略的特色在哪? 風險方面 第一、時間問題不好掌握,因為需要盯盤,特別是每週三的選擇權結算日。由於根據我目前的紀錄來看,倒莊翻倍行情發生機率佔比50%左右,可能也有一半的機會遇不到倒莊翻倍行情,因此沒有交易而被消磨掉的個人時間就是最大的機會成本,因為你的資金
Thumbnail
在繁華的城市中,小宅常被看作是對於居住舒適度的妥協,人們總認為小空間等同於擁擠和侷限。然而,室內設計的力量就在於此,它可以喚醒小宅的潛力,將其轉化為一個溫馨且功能強大的生活空間。本文將探討室內設計如何發掘小宅的潛力,並提供一些實用的設計建議。 相關文章:【室內設計解惑】什麼是現代簡約風?帶你領略簡約
Thumbnail
商家的目標就是要把我們的消費行為變成一個習慣,這樣才能讓他們利潤最大化。不論你是在消費性電子行業、食品業、金融服務業,大部分顧客的行為也是潛意識習慣引申出來的。 很多人習慣在早上都會喝一杯咖啡,不論是在連鎖咖啡店,還是茶餐廳,這已經成為了人們生活的一部分。 【個人網站】 【加密貨幣】 【被動收入】
【前言】 當一家「新創企業」進入了穩定期~筆者認為:階段性的目標,應該是「獲利」最大化!   「獲利」最大化~筆者認為:一點都不奇怪!  上班族,想加薪~不一定會如老闆的意願;但一般人都不會覺得奇怪呀!  那麼,企業想要賺更多~又有啥好奇怪的!  (若嫌錢賺得太多~也是等錢賺進來後,再分出去!)  
Thumbnail
台灣最大的金融控股公司,國泰金控,股票代號 2882   國泰金的子公司陣容也相當龐大,一樣具有銀行、證券、保險三大事業體  其營業占比最高的是國泰人壽與國泰世華銀行,且占比相當高   從基本面再到技術面,就讓我們看下去吧!
Thumbnail
#46《哈佛商學院的雙贏談判課》(中):克服談判偏誤,為自己帶來最大獲利!作為談判者的我們應該要理解,談判過程中雙方可能是不理性的,這些談判時的心理狀態或偏見會導致人們無法理性衡量最大利益,所以在談判時要把偏誤納入考慮。至於談判中有哪些偏誤。現在我們就一起來看下去吧!