一.题目描述
假设 LeetCode 即将开始其 IPO。为了以更高的价格将股票卖给风险投资公司,LeetCode希望在 IPO 之前开展一些项目以增加其资本。 由于资源有限,它只能在 IPO 之前完成最多 k 个不同的项目。帮助 LeetCode 设计完成最多 k 个不同项目后得到最大总资本的方式。
给定若干个项目。对于每个项目 i,它都有一个纯利润 Pi,并且需要最小的资本 Ci 来启动相应的项目。最初,你有 W 资本。当你完成一个项目时,你将获得纯利润,且利润将被添加到你的总资本中。
总而言之,从给定项目中选择最多 k 个不同项目的列表,以最大化最终资本,并输出最终可获得的最多资本。
二.示例
三.算法分析
先利用数组将成本和利润打包成元组对象,再按照成本将次从大到小排序为成本和利润数组,判断满足成本的项目,并将其对应的利润负数压入堆,方便后续提出最小的值也就是最大的利润,重复压入提出则最终得到总最大利润。
四.算法实现
class Solution(object):
def findMaximizedCapital(self, k, W, Profits, Capital):