贪心算法:IPO

题目

假设 力扣(LeetCode)即将开始 IPO 。为了以更高的价格将股票卖给风险投资公司,力扣 希望在 IPO 之前开展一些项目以增加其资本。 由于资源有限,它只能在 IPO 之前完成最多 k 个不同的项目。帮助 力扣 设计完成最多 k 个不同项目后得到最大总资本的方式。

给你 n 个项目。对于每个项目 i,它都有一个纯利润 profits[i] ,和启动该项目需要的最小资本 capital[i]

最初,你的资本为 w 。当你完成一个项目时,你将获得纯利润,且利润将被添加到你的总资本中。

总而言之,从给定项目中选择 最多 k 个不同项目的列表,以 最大化最终资本 ,并输出最终可获得的最多资本。

答案保证在 32 位有符号整数范围内。

示例 1:

复制代码
输入:k = 2, w = 0, profits = [1,2,3], capital = [0,1,1]
输出:4
解释:
由于你的初始资本为 0,你仅可以从 0 号项目开始。
在完成后,你将获得 1 的利润,你的总资本将变为 1。
此时你可以选择开始 1 号或 2 号项目。
由于你最多可以选择两个项目,所以你需要完成 2 号项目以获得最大的资本。
因此,输出最后最大化的资本,为 0 + 1 + 3 = 4。

示例 2:

复制代码
输入:k = 3, w = 0, profits = [1,2,3], capital = [0,1,2]
输出:6

题解

典型的贪心算法:在启动资金允许的范围内选择收益最大的项目

java 复制代码
class Solution {
    public int findMaximizedCapital(int k, int w, int[] profits, int[] capital) {
        int n = profits.length;
        int curr = 0;
        int[][] arr = new int[n][2];

        for (int i = 0; i < n; ++i) {
            arr[i][0] = capital[i];
            arr[i][1] = profits[i];
        }
        //按启动资金排序
        Arrays.sort(arr, (a, b) -> a[0] - b[0]);
        //按收益倒排序,
        PriorityQueue<Integer> pq = new PriorityQueue<>((x, y) -> y - x);
        //循环k次,最多取k个项目
        for (int i = 0; i < k; ++i) {
            //还有项目而且,项目需要的启动资金小于当前的已有的启动资金
            while (curr < n && arr[curr][0] <= w) {
                pq.add(arr[curr][1]);
                curr++;
            }
            //选择收益最大的项目
            if (!pq.isEmpty()) {
                w += pq.poll();
            } else {
                break;
            }
        }

        return w;
    }
}
相关推荐
零小陈上(shouhou6668889)3 分钟前
K-近邻算法 - lazy learning的代表
算法·近邻算法
有一个好名字9 分钟前
力扣-从字符串中移除星号
java·算法·leetcode
萧瑟其中~13 分钟前
二分算法模版——基础二分查找,左边界查找与右边界查找(Leetcode的二分查找、在排序数组中查找元素的第一个位置和最后一个位置)
数据结构·算法·leetcode
码上就好ovo14 分钟前
Atcoder Beginnner Contest 440
算法
高洁0122 分钟前
CLIP 的双编码器架构是如何优化图文关联的?(3)
深度学习·算法·机器学习·transformer·知识图谱
jllllyuz27 分钟前
MATLAB实现蜻蜓优化算法
开发语言·算法·matlab
iAkuya29 分钟前
(leetcode)力扣100 36二叉树的中序遍历(迭代递归)
算法·leetcode·职场和发展
wangwangmoon_light37 分钟前
1.1 LeetCode总结(线性表)_枚举技巧
算法·leetcode·哈希算法
mit6.8241 小时前
几何|阻碍链
算法