502. IPO
Read the full problem statement on LeetCode.
Difficulty: hard Acceptance: 53% Topics: Array, Greedy, Sorting, Heap (Priority Queue)
View full problem on LeetCode Reading material
Reference solution (spoiler · python)
# Time: O(nlogn)
# Space: O(n)
import heapq
class Solution(object):
def findMaximizedCapital(self, k, W, Profits, Capital):
"""
:type k: int
:type W: int
:type Profits: List[int]
:type Capital: List[int]
:rtype: int
"""
curr = []
future = sorted(zip(Capital, Profits), reverse=True)
for _ in xrange(k):
while future and future[-1][0] <= W:
heapq.heappush(curr, -future.pop()[1])
if curr:
W -= heapq.heappop(curr)
return W
Solution from kamyu104/LeetCode-Solutions · MIT