. IPO

WBOY
풀어 주다: 2024-07-16 17:20:30
원래의
622명이 탐색했습니다.

. IPO

502. 기업공개

하드

LeetCode가 곧IPO를 시작한다고 가정해 보겠습니다. LeetCode는 자사주를 벤처캐피탈에 좋은 가격으로 매각하기 위해IPO전에 자본금을 늘리는 몇 가지 프로젝트를 진행하고자 합니다. 자원이 제한되어 있기 때문에IPO전에는 최대 k개의 개별 프로젝트만 완료할 수 있습니다. LeetCode가 최대 k개의 개별 프로젝트를 완료한 후 총 자본을 극대화할 수 있는 최선의 방법을 설계하도록 도와주세요.

i번째프로젝트가 순수 이익 이익[i]을 가지며 이를 시작하려면 최소 자본금[i]이 필요한 n개의 프로젝트가 제공됩니다.

처음에는 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 == 이익.길이
  • n == 대문자.길이
  • 1 5
  • 0 4
  • 0 <= 대문자[i] <= 109

해결책:

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; } }

연락처 링크

  • 링크드인
  • 깃허브

위 내용은 . IPO의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:dev.to
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿
회사 소개 부인 성명 Sitemap
PHP 중국어 웹사이트:공공복지 온라인 PHP 교육,PHP 학습자의 빠른 성장을 도와주세요!