【LeetCode 502】IPO
一、题目描述
假设 LeetCode 即将开始其 IPO。为了以更高的价格将股票卖给风险投资公司,LeetCode希望在 IPO 之前开展一些项目以增加其资本。 由于资源有限,它只能在 IPO 之前完成最多 k 个不同的项目。帮助 LeetCode 设计完成最多 k 个不同项目后得到最大总资本的方式。
给定若干个项目。对于每个项目 i,它都有一个纯利润 Pi,并且需要最小的资本 Ci 来启动相应的项目。最初,你有 W 资本。当你完成一个项目时,你将获得纯利润,且利润将被添加到你的总资本中。
总而言之,从给定项目中选择最多 k 个不同项目的列表,以最大化最终资本,并输出最终可获得的最多资本。
二、示例
示例 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。
注意:
- 假设所有输入数字都是非负整数。
- 表示利润和资本的数组的长度不超过 50000。
- 答案保证在 32 位有符号整数范围内。
三、分析
贪心算法:每次挑选出满足启动资金(capital)要求的各个项目中利润(profit)最大的那个。
数据结构方面:因为存在相同的capital值的可能,所以用multimap。但是multimap如果按照key值删除,那么将会删除所有相同key的数据,不满足题意,所以采用迭代器。
而且map的key值默认按照升序排列,可以减少运算量。
此外priority_queue自带排序功能
四、实现
class Solution {
public: int findMaximizedCapital(int k, int W, vector<int>& Profits, vector<int>& Capitals) {multimap<int,int> map;for(int i = 0; i < Capitals.size(); ++i){map.insert(make_pair(Capitals[i],Profits[i]));}priority_queue<int> prique;while(k--){for(auto iter = map.begin(); iter != map.end(); iter++){//map的key自动按照升序排列if(iter->first <= W){prique.push(iter->second);//优先队列里面存的是available的利润值map.erase(iter);}else break;}if(prique.empty()) break;W += prique.top();//优先队列top出来的是最大的数.prique.pop();//此轮在队列中留下的数在下一轮继续available}return W;}
};
【LeetCode 502】IPO相关推荐
- 重复次数最多的 子串_每日算法系列【LeetCode 424】替换后的最长重复字符
题目描述 给你一个仅由大写英文字母组成的字符串,你可以将任意位置上的字符替换成另外的字符,总共可最多替换 k 次.在执行上述操作后,找到包含重复字母的最长子串的长度. 示例1 输入: s = &quo ...
- 【LeetCode - 32】最长有效括号
给你一个只包含 '(' 和 ')' 的字符串,找出最长有效(格式正确且连续)括号子串的长度. 示例 1: 输入:s = "(()" 输出:2 解释:最长有效括号子串是 " ...
- 【LeetCode题解】二叉树的遍历
我准备开始一个新系列[LeetCode题解],用来记录刷题,顺便复习一下数据结构与算法. 1. 二叉树 二叉树(binary tree)是一种极为普遍的数据结构,树的每一个节点最多只有两个节点--左孩 ...
- 如何给柱状图柱子添加阴影_【LeetCode日记】84. 柱状图中最大的矩形
题目描述 ` 给定 n 个非负整数,用来表示柱状图中各个柱子的高度.每个柱子彼此相邻,且宽度为 1 . 求在该柱状图中,能够勾勒出来的矩形的最大面积. 以上是柱状图的示例,其中每个柱子的宽度为 1,给 ...
- 【LeetCode笔记】253. 会议室 II(Java、偏数学)
文章目录 题目描述 思路 && 代码 计划里 hot 100 + 剑指Offer 的题目中唯一一道会员题,同时也是最后一道没写的题,刚好今天 leetcode 发了一天会员可以写上-简 ...
- 【LeetCode笔记】301. 删除无效的括号(Java、DFS、字符串)
文章目录 题目描述 思路 && 代码 二刷 题目描述 [所有可能结果]-> [暴力DFS] 思路 && 代码 代码比较长,但是总体思路很清晰. 剪枝:舍弃左括号. ...
- 【LeetCode 总结】Leetcode 题型分类总结、索引与常用接口函数
文章目录 零. Java 常用接口函数 一. 动态规划 二. 链表 三. 哈希表 四. 滑动窗口 五. 字符串 六. DFS.BFS 七. 二分法 八. 二叉树 九. 偏数学.过目不忘 and 原地算 ...
- 【LeetCode笔记】剑指 Offer 03. 数组中重复的数字(Java、哈希表、原地算法)
文章目录 题目描述 思路 & 代码 二刷 题目描述 倒是和leetcode 287 寻找重复数很像..但是不能使用那道题的快慢指针法(也可能是我太菜了) 重点在于题干的描述[长度为 n 的数组 ...
- 【LeetCode笔记】53. 最大子序和(Java、动态规划)
文章目录 题目描述 代码 & 思路 题目描述 经典题目了,多种解法(不过目前只学了一种,暴力不算) 代码 & 思路 这块基本上算是写给自己看的了..写得不好,如果想学这种方法最好还是去 ...
最新文章
- intel 汇编中断解释
- 飞鸽传书为我们提供了方便的聊天工具
- 发送邮件现在应用得最多的两种情况就是利用.NET自带的发送邮件和利用jmail组件来发送邮件。...
- 《C语言深度解剖》学习笔记之内存管理
- 打印出所有的 水仙花数 ,所谓 水仙花数 是指一个三位数,其各位数字立方和等于该数本身。例如:153是一个 水仙花数 ,因为153=1的三次方+5的三次方+3的三次方。...
- Python多重继承(一分钟读懂)
- lnk200无法解析的外部符号_语义解析
- Day21 linux安装RPM包
- Kaggle TMDB电影数据分析项目实战
- FOXIT PDF SDK 8.1 ALL Crack
- html阅读是什意思,HTML是什么意思?什么是HTML5?什么是H5? | 前端面试题
- 解决cherry pick提交报错问题
- 批处理图片尺寸修改成4的倍数
- 酷6 期待“化茧成蝶”
- ABeam Insight | 德硕智能制造系列(1):智能制造概览(上)
- 用电脑键盘打出常用特殊符号
- 文本和输入:复制和粘贴
- 微商必备6款软件!十分好用
- sql语句基础-提升
- 根据excel模板导出
热门文章
- 零压力学python_《零压力学Python》 之 第一章知识点归纳
- 字符串按单词逆序输出c 语言,字符串中的每个单词倒序输出问题
- php foreach方法,forEach方法怎么使用
- 小米4硬改教程_小米手环3美化/修改资源包教程(含加入二维码教程)
- gis影像格式img转为ecw_微图影像地图导出拼接大图的参数说明
- vue 使用fs_模仿vue-cli,手写一个脚手架
- 一种新的url定向技术-使用@与/?
- python的字符串的转义
- 自编码器参数是否需要相称呢
- 国睿驰120gb固态硬盘测试软件,系统盘首选 国睿驰120GB固态硬盘测试