502。首次公開發行
難
假設LeetCode即將開始IPO。為了能以好的價格將股份出售給創投公司,LeetCode 希望在 IPO 之前開展一些增資項目。由於資源有限,它只能在 IPO 之前完成最多 k 個不同的專案。幫助 LeetCode 設計在完成最多 k 個不同項目後最大化其總資本的最佳方式。
給你n個項目,其中第i第個項目有純利潤利潤[i],並且需要最低資本資本[i]來啟動它。
最初,你有w資本。當您完成一個專案時,您將獲得其純利潤,該利潤將添加到您的總資本中。
從給定項目中選擇最多 k 個不同項目來最大化您的最終資本,並返回最終最大化資本。
答案保證適合 32 位元有符號整數。
範例1:
完成後您將獲得利潤1,您的資本變為1。
使用大寫1,您可以啟動索引為1的項目或索引為2的項目。
由於您最多可以選擇2個項目,因此您需要完成索引為2的項目才能獲得最大資本。
因此,輸出最終的最大化資本,即0 + 1 + 3 = 4。
範例2:
約束:
解:
class Solution { /** * @param Integer $k * @param Integer $w * @param Integer[] $profits * @param Integer[] $capital * @return Integer */ function findMaximizedCapital($k, $w, $profits, $capital) { $n = count($capital); $minCapitalHeap = new SplMinHeap(); for ($i = 0; $i < $n; ++$i) { $minCapitalHeap->insert([$capital[$i], $profits[$i]]); } $maxProfitHeap = new SplMaxHeap(); while ($k-- > 0) { while (!$minCapitalHeap->isEmpty() && $minCapitalHeap->top()[0] <= $w) { $maxProfitHeap->insert($minCapitalHeap->extract()[1]); } if ($maxProfitHeap->isEmpty()) { break; } $w += $maxProfitHeap->extract(); } return $w; } }
聯絡連結
以上是。首次公開募股的詳細內容。更多資訊請關注PHP中文網其他相關文章!