。首次公開募股

WBOY
發布: 2024-07-16 17:20:30
原創
837 人瀏覽過

. IPO

502。首次公開發行

假設LeetCode即將開始IPO。為了能以好的價格將股份出售給創投公司,LeetCode 希望在 IPO 之前開展一些增資項目。由於資源有限,它只能在 IPO 之前完成最多 k 個不同的專案。幫助 LeetCode 設計在完成最多 k 個不同項目後最大化其總資本的最佳方式。

給你n個項目,其中第i個項目有純利潤利潤[i],並且需要最低資本資本[i]來啟動它。

最初,你有w資本。當您完成一個專案時,您將獲得其純利潤,該利潤將添加到您的總資本中。

從給定項目中選擇最多 k 個不同項目來最大化您的最終資本,並返回最終最大化資本

答案保證適合 32 位元有符號整數。

範例1:

  • 輸入: k = 2,w = 0,利潤 = [1,2,3],資本 = [0,1,1]
  • 輸出: 4
  • 說明:由於您的初始資金為0,因此您只能啟動索引為0的項目。

完成後您將獲得利潤1,您的資本變為1。

使用大寫1,您可以啟動索引為1的項目或索引為2的項目。

由於您最多可以選擇2個項目,因此您需要完成索引為2的項目才能獲得最大資本。

因此,輸出最終的最大化資本,即0 + 1 + 3 = 4。

範例2:

  • 輸入: k = 3,w = 0,利潤 = [1,2,3],資本 = [0,1,2]
  • 輸出: 6

約束:

  • 1 5
  • 0 9
  • n ==profits.length
  • n == 大寫字母.length
  • 1 5
  • 0 4
  • 0 9

解:

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;
    }
}
登入後複製

聯絡連結

  • 領英
  • GitHub

以上是。首次公開募股的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:dev.to
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板