我是靠谱客的博主 优秀冬天,最近开发中收集的这篇文章主要介绍LeetCode题解(0502):IPO(Python),觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

题目:原题链接(中等)

标签:堆、贪心算法、排序

解法时间复杂度空间复杂度执行用时
Ans 1 (Python) O ( K l o g N ) O(KlogN) O(KlogN) O ( N ) O(N) O(N)128ms (25.96%)
Ans 2 (Python)
Ans 3 (Python)

解法一(堆):

class Solution:
    def findMaximizedCapital(self, k: int, W: int, Profits: List[int], Capital: List[int]) -> int:
        size = len(Profits)

        # 依据成本排序项目
        lst = [(- Profits[i], Capital[i]) for i in range(size)]
        lst.sort(key=lambda x: x[1])

        i = 0  # 当前准备添加的项目
        heap = []  # 可完成的项目堆(项目收益最大值优先)

        # 贪心选择最优项目
        for _ in range(k):
            # 将资金满足的项目添加到列表
            while i < size and lst[i][1] <= W:
                heapq.heappush(heap, lst[i])
                i += 1

            if heap:
                # 选择当前收益最高的项目
                w, c = heapq.heappop(heap)
                W += -w
            else:
                return W  # 如果没有可以选择的项目则返回当前的资本

        return W

最后

以上就是优秀冬天为你收集整理的LeetCode题解(0502):IPO(Python)的全部内容,希望文章能够帮你解决LeetCode题解(0502):IPO(Python)所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(54)

评论列表共有 0 条评论

立即
投稿
返回
顶部